feat(animal-chat): LanceDB 벡터 검색 RAG 통합

- LanceDB로 MD 문서 252개 청크 인덱싱
- /api/animal-chat에 벡터 검색 컨텍스트 주입
- 마지막 사용자 메시지로 관련 문서 검색 (top 3)
- ChromaDB Windows crash로 LanceDB 채택
This commit is contained in:
thug0bin
2026-03-08 15:00:39 +09:00
parent 3631da2953
commit be1e6c2bb7
16 changed files with 400 additions and 1 deletions

View File

@@ -3192,10 +3192,22 @@ def api_animal_chat():
{chr(10).join(product_lines)}
"""
# 벡터 DB 검색 (LanceDB RAG)
vector_context = ""
try:
from utils.animal_rag import get_animal_rag
# 마지막 사용자 메시지로 검색
last_user_msg = next((m['content'] for m in reversed(messages) if m.get('role') == 'user'), '')
if last_user_msg:
rag = get_animal_rag()
vector_context = rag.get_context_for_chat(last_user_msg, n_results=3)
except Exception as e:
logging.warning(f"벡터 검색 실패 (무시): {e}")
# System Prompt 구성
system_prompt = ANIMAL_CHAT_SYSTEM_PROMPT.format(
available_products=available_products_text,
knowledge_base=ANIMAL_DRUG_KNOWLEDGE
knowledge_base=ANIMAL_DRUG_KNOWLEDGE + "\n\n" + vector_context if vector_context else ANIMAL_DRUG_KNOWLEDGE
)
# OpenAI API 호출