AI UPDATE
This commit is contained in:
+22
-4
@@ -1,18 +1,20 @@
|
||||
"""
|
||||
بازیابی RAG: embed کوئری و جستجو در vector store
|
||||
"""
|
||||
from .config import load_rag_config, RAGConfig
|
||||
from .config import load_rag_config, RAGConfig, get_service_config
|
||||
from .embedding import embed_single
|
||||
from .vector_store import QdrantVectorStore
|
||||
|
||||
|
||||
def search_with_query(
|
||||
query: str,
|
||||
sensor_uuid: str,
|
||||
sensor_uuid: str | None = None,
|
||||
limit: int = 5,
|
||||
score_threshold: float | None = None,
|
||||
config: RAGConfig | None = None,
|
||||
kb_name: str | None = None,
|
||||
service_id: str | None = None,
|
||||
use_user_embeddings: bool | None = None,
|
||||
) -> list[dict]:
|
||||
"""
|
||||
کوئری را embed میکند و در vector store جستجو میکند.
|
||||
@@ -27,12 +29,28 @@ def search_with_query(
|
||||
لیست نتایج با id, score, text, metadata
|
||||
"""
|
||||
cfg = config or load_rag_config()
|
||||
service = get_service_config(service_id, cfg) if service_id else None
|
||||
resolved_kb_name = kb_name or (service.knowledge_base if service else None)
|
||||
include_user_embeddings = (
|
||||
use_user_embeddings
|
||||
if use_user_embeddings is not None
|
||||
else (service.use_user_embeddings if service else True)
|
||||
)
|
||||
|
||||
sensor_filters = ["__global__"]
|
||||
if include_user_embeddings and sensor_uuid:
|
||||
sensor_filters.insert(0, sensor_uuid)
|
||||
|
||||
kb_filters = [resolved_kb_name] if resolved_kb_name else []
|
||||
if include_user_embeddings:
|
||||
kb_filters.append("__all__")
|
||||
|
||||
query_vector = embed_single(query, config=cfg)
|
||||
store = QdrantVectorStore(config=cfg)
|
||||
return store.search(
|
||||
query_vector=query_vector,
|
||||
limit=limit,
|
||||
score_threshold=score_threshold,
|
||||
sensor_uuid=sensor_uuid,
|
||||
kb_name=kb_name,
|
||||
sensor_uuids=sensor_filters,
|
||||
kb_names=kb_filters,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user