Spaces:
Sleeping
Sleeping
Add full RAG pipeline: agent, rag_engine, generator, knowledge_base, full Gradio UI
Browse files
agent.py
CHANGED
|
@@ -95,14 +95,14 @@ class MLOpsRAGAgent:
|
|
| 95 |
logger.error(f"Retrieval failed: {e}")
|
| 96 |
return [], []
|
| 97 |
|
| 98 |
-
# ChromaDB returns cosine *distance* (lower = more similar).
|
| 99 |
-
# A score threshold on distance would silently discard the best chunks,
|
| 100 |
-
# so we pass all retrieved nodes to the Flan-T5 relevance check instead.
|
| 101 |
scores = [self.rag.get_node_score(n) for n in nodes]
|
| 102 |
logger.info(f"Raw node distances: {[round(s, 3) for s in scores]}")
|
| 103 |
|
| 104 |
-
|
| 105 |
-
|
|
|
|
|
|
|
|
|
|
| 106 |
text = self.rag.get_node_text(node)
|
| 107 |
try:
|
| 108 |
if self.gen.check_relevance(query, text):
|
|
|
|
| 95 |
logger.error(f"Retrieval failed: {e}")
|
| 96 |
return [], []
|
| 97 |
|
|
|
|
|
|
|
|
|
|
| 98 |
scores = [self.rag.get_node_score(n) for n in nodes]
|
| 99 |
logger.info(f"Raw node distances: {[round(s, 3) for s in scores]}")
|
| 100 |
|
| 101 |
+
# Always keep the top 3 nodes (retriever returns them sorted by distance
|
| 102 |
+
# ascending, so these are the closest matches). Run the LLM relevance
|
| 103 |
+
# check only on nodes 4-6 to optionally widen the context.
|
| 104 |
+
relevant = list(nodes[:3])
|
| 105 |
+
for node in nodes[3:]:
|
| 106 |
text = self.rag.get_node_text(node)
|
| 107 |
try:
|
| 108 |
if self.gen.check_relevance(query, text):
|