IDEA-2/1/5/7: 스마트 알림, 대화 기반 RAG, CRAG, 파라미터 자동 튜닝
- IDEA-2 스마트 알림: td_reminders 테이블, set_reminder/list_reminders 도구,
SchedulerService(asyncio 60초 루프, D-7/D-1/D-0 Telegram push),
FastAPI lifespan 연동, GET /reminders/{user_id} 엔드포인트
- IDEA-1 대화 기반 RAG: IngestionService.store_text() 추가,
AgentService._maybe_index_conversation() — 응답 후 LLM 판단 → Qdrant 저장
(CONV_RAG_ENABLED=true 활성화, background task로 응답 속도 무관)
- IDEA-5 CRAG: AgentState에 crag_fallback_used 플래그 추가,
crag_check LangGraph 노드 — search_documents 결과 없으면 web_search 자동 주입,
route_after_crag으로 fallback 1회 루프 제어 (CRAG_ENABLED=true 활성화)
- IDEA-7 RAG Auto-Eval: eval/auto_tune.py — API 서버 없이 파라미터 조합별
context_precision/recall 비교, 최적 설정 추천
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -59,6 +59,21 @@ class IngestionService:
|
||||
except Exception:
|
||||
pass # 컬렉션이 없을 때(최초 수집) 무시
|
||||
|
||||
def store_text(self, text: str, metadata: dict) -> None:
|
||||
"""단일 텍스트를 Qdrant에 직접 저장 (semantic chunking 없이)."""
|
||||
from langchain_core.documents import Document
|
||||
doc = Document(page_content=text, metadata=metadata)
|
||||
kwargs = dict(
|
||||
documents=[doc],
|
||||
embedding=self._embeddings,
|
||||
url=self._qdrant_url,
|
||||
collection_name=self._collection_name,
|
||||
)
|
||||
if self._sparse_embeddings:
|
||||
kwargs["sparse_embedding"] = self._sparse_embeddings
|
||||
kwargs["retrieval_mode"] = RetrievalMode.HYBRID
|
||||
QdrantVectorStore.from_documents(**kwargs)
|
||||
|
||||
def ingest(self, file_paths: list[str]) -> int:
|
||||
self._ensure_collection_schema()
|
||||
docs = []
|
||||
|
||||
Reference in New Issue
Block a user