From 995c1f27ebb21a1a3eb01c39144ec4cf08b6f2fb Mon Sep 17 00:00:00 2001 From: KaifAhmad1 Date: Mon, 22 Dec 2025 21:59:05 +0530 Subject: [PATCH] Add 'Open in Colab' badges to notebooks --- .../02_RAG_vs_GraphRAG_Comparison.ipynb | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/cookbook/use_cases/advanced_rag/02_RAG_vs_GraphRAG_Comparison.ipynb b/cookbook/use_cases/advanced_rag/02_RAG_vs_GraphRAG_Comparison.ipynb index da56a712..8dc1785e 100644 --- a/cookbook/use_cases/advanced_rag/02_RAG_vs_GraphRAG_Comparison.ipynb +++ b/cookbook/use_cases/advanced_rag/02_RAG_vs_GraphRAG_Comparison.ipynb @@ -7,6 +7,8 @@ "source": [ "# RAG vs. GraphRAG: Final Answer Comparison\n", "\n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Hawksight-AI/semantica/blob/main/cookbook/use_cases/advanced_rag/02_RAG_vs_GraphRAG_Comparison.ipynb)\n", + "\n", "This notebook demonstrates the difference in final answers generated by **Standard Vector RAG** and **Semantica GraphRAG** for a complex multi-hop query. We use **FalkorDB** as our high-performance graph backend.\n", "\n", "### FalkorDB Setup\n", @@ -23,7 +25,7 @@ "metadata": {}, "outputs": [], "source": [ - "%pip install -qU semantica networkx matplotlib plotly pandas faiss-cpu falkordb" + "%pip install -qU semantica networkx matplotlib plotly pandas faiss-cpu falkordb sentence-transformers" ] }, { @@ -32,7 +34,7 @@ "metadata": {}, "source": [ "## 1. Environment & Store Initialization\n", - "We set up our **Vector Store** for semantic search and **FalkorDB** for persistent graph storage." + "We set up our **Vector Store** using **Sentence-Transformers** for local embeddings and **FalkorDB** for persistent graph storage." ] }, { @@ -42,16 +44,25 @@ "metadata": {}, "outputs": [], "source": [ - "from semantica.core import Semantica\n", + "from semantica.core import Semantica, ConfigManager\n", "from semantica.vector_store import VectorStore\n", "from semantica.graph_store import GraphStore\n", "from semantica.kg import GraphBuilder\n", "from semantica.split import TextSplitter\n", "from semantica.normalize import TextNormalizer\n", + "import os\n", "\n", "# 1. Core Semantica & Vector Store\n", - "v_core = Semantica()\n", - "vs = VectorStore(backend=\"faiss\", dimension=1536)\n", + "os.environ[\"GROQ_API_KEY\"] = \"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\"\n", + "\n", + "config_dict = {\n", + " \"embedding\": {\"provider\": \"sentence_transformers\", \"model\": \"all-MiniLM-L6-v2\"},\n", + " \"extraction\": {\"provider\": \"groq\", \"model\": \"llama-3.1-8b-instant\"},\n", + " \"inference\": {\"provider\": \"groq\", \"model\": \"llama-3.1-70b-versatile\"}\n", + "}\n", + "config = ConfigManager().load_from_dict(config_dict)\n", + "v_core = Semantica(config=config)\n", + "vs = VectorStore(backend=\"faiss\", dimension=384)\n", "\n", "# 2. FalkorDB Persistent Graph Store\n", "graph_store = GraphStore(\n", @@ -70,7 +81,7 @@ " use_persistent = False\n", "\n", "# 3. Graph Builder with Persistence Support\n", - "gb = GraphBuilder(merge_entities=True, graph_store=graph_store if use_persistent else None)\n", + "gb = GraphBuilder(merge_entities=True, resolve_conflicts=True, graph_store=graph_store if use_persistent else None)\n", "splitter = TextSplitter(method=\"recursive\", chunk_size=800, chunk_overlap=100)\n", "normalizer = TextNormalizer()" ] @@ -150,13 +161,14 @@ "duplicates = detector.detect_duplicates(kg['entities'])\n", "kg_refined = merger.merge_entities(kg, duplicates)\n", "\n", - "# 2. Conflict Resolution\n", + "# 2. Conflict Detection\n", "conflict_detector = ConflictDetector()\n", - "conflicts = conflict_detector.detect_conflicts(kg_refined['entities'])\n", + "conflicts = conflict_detector.detect_value_conflicts(kg_refined['entities'], property_name=\"name\")\n", "if conflicts:\n", + " print(f\"Detected {len(conflicts)} property conflicts.\")\n", " resolver = ConflictResolver()\n", - " for conflict in conflicts:\n", - " kg_refined = resolver.resolve_conflict(conflict, strategy=\"credibility_weighted\")\n", + " results = resolver.resolve_conflicts(conflicts, strategy=\"voting\")\n", + " print(f\"Successfully resolved {len(results)} conflicts.\")\n", "\n", "print(\"Knowledge Graph Refined.\")" ]