| 1234567891011121314151617181920212223242526272829303132333435363738 |
- from typing import Dict
- from pydantic import BaseModel
- from
- from main import app
- from services import collection_view
- class RetrievalSetting(BaseModel):
- top_k: int
- score_threshold: float
- embedding_instruct: str | None = None
- reranker_instruct: str | None = None
- class Retrieval(BaseModel):
- knowledge_id: str
- query: str
- retrieval_setting: RetrievalSetting
- metadata_condition: Dict | None = None
- @app.post('/retrieval')
- def retrieval(req: Retrieval):
- chunks = collection_view.search(
- req.query,
- expand_chunk=[1, 1],
- limit=req.retrieval_setting.top_k,
- )
- return {
- 'records': [
- {
- 'content': chunk.data.text,
- 'score': chunk.score,
- 'title': chunk.data.documentSet.documentSetName,
- 'metadata': {
- 'document_id': str(chunk.data.documentSet.documentSetId),
- },
- } for chunk in chunks
- ]
- }
|