File size: 959 Bytes
91ca409
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# app/services/chatbot.py
from langchain_chroma import Chroma
from langchain_huggingface import HuggingFaceEmbeddings
from app.config import Config

PERSIST_DIR = Config.PERSIST_DIR
EMBEDDING_MODEL = Config.EMBEDDING_MODEL

embeddings = HuggingFaceEmbeddings(model_name=EMBEDDING_MODEL)
db = Chroma(persist_directory=PERSIST_DIR, embedding_function=embeddings)

def ask(query, k=6):
    results = db.similarity_search_with_score(query, k=k)
    response = []
    for doc, score in results:
        meta = doc.metadata
        response.append({
            "titre": meta.get("titre", ""),
            "chapitre": meta.get("chapitre", ""),
            "article": meta.get("article", ""),
            "contenu": doc.page_content,
            "doc": meta.get("doc", ""),
            "pages": meta.get("pages", []) if isinstance(meta.get("pages"), list) else [meta.get("pages")] if meta.get("pages") else []
        })
    return response