mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-09 13:22:10 +02:00
Adds a sparse keyword retrieval path beside the existing vector path in document-RAG, fused by weighted Reciprocal Rank Fusion on chunk_id, behind --retrieval-mode (vector | keyword | hybrid, default vector). The keyword index is a new pluggable service (KeywordIndexService / KeywordIndexClientSpec); the first backend is SQLite FTS5, consuming Chunk messages off the ingestion stream and answering BM25 queries from one process, since the index is a single local file. Query text is sanitized into per-term quoted phrases (raw text is not valid FTS5 syntax), which also makes dotted clause numbers and error codes exact-match without a trigram index. Indexes are scoped per (workspace, collection) and dropped on collection deletion. The keyword-index client spec is only registered when the sparse path is enabled, so existing flow definitions without keyword-index queues are untouched; with retrieval_mode=vector the retrieval path is unchanged. In hybrid mode a keyword-path failure degrades to vector-only. |
||
|---|---|---|
| .. | ||
| conftest.py | ||
| test_cassandra_config_integration.py | ||
| test_cassandra_storage_logic.py | ||
| test_doc_embeddings_milvus_storage.py | ||
| test_doc_embeddings_pinecone_storage.py | ||
| test_doc_embeddings_qdrant_storage.py | ||
| test_graph_embeddings_milvus_storage.py | ||
| test_graph_embeddings_pinecone_storage.py | ||
| test_graph_embeddings_qdrant_storage.py | ||
| test_kw_index_fts5_storage.py | ||
| test_memgraph_workspace_collection_isolation.py | ||
| test_neo4j_workspace_collection_isolation.py | ||
| test_row_embeddings_qdrant_storage.py | ||
| test_rows_cassandra_storage.py | ||
| test_triples_cassandra_storage.py | ||
| test_triples_falkordb_storage.py | ||
| test_triples_memgraph_storage.py | ||
| test_triples_neo4j_storage.py | ||