Descriere & Utilizare
După ce documentele au fost împărțite în fragmente (chunks), acestea trebuie indexate pentru căutare semantică. O clasă VectorStore (precum Chroma, FAISS, Qdrant sau PGVector) apelează un model de embedding pentru a transforma fiecare fragment într-un vector numeric și îl salvează.
Apelând metoda vectorstore.as_retriever(), transformi baza de date într-o componentă standard Runnable care poate fi integrată direct cu operatorul | în orice lanț LCEL.
Poți configura atât numărul de pasaje returnate (k: 4), cât și algoritmul de selecție: similarity (cele mai apropiate matematic) sau mmr (Maximal Marginal Relevance – care aduce rezultate relevante, dar diverse, evitând pasajele aproape identice).
Cum să o reții ușor
💡 Ca un bibliotecar cu memorie fotografică: nu caută mecanic doar cărțile care au exact cuvântul ‘automobil’ pe copertă, ci îți aduce instant cele mai bune 4 paragrafe despre ‘mașini și vehicule’ chiar dacă folosesc sinonime.
Opțiuni și parametri tehnici
- Transformă interogarea utilizatorului într-un vector folosind același model de embedding ca la indexare.
- Calculează distanța cosinus sau produsul scalar în spațiul multidimensional HNSW.
- Returnează primele
kobiecteDocumentordonate descrescător după relevanță.
Exemple practice și cazuri de utilizare
- Căutare diversificată MMR:
retriever = vectorstore.as_retriever(search_type='mmr', search_kwargs={'k': 5, 'fetch_k': 20}) - Filtrare după metadate:
retriever = vectorstore.as_retriever(search_kwargs={'k': 3, 'filter': {'categorie': 'juridic'}})
Sfaturi de configurare & capcane
Nu schimba niciodată modelul de embedding (ex: de la text-embedding-3-small la nomic-embed-text) pe o bază de date vectorială deja populată fără a reindexa toate documentele de la zero, deoarece dimensiunile și spațiile vectoriale sunt incompatibile.
Comenzi și ghiduri înrudite
document-loaders-splitters: Resursă asociată din acest modul.runnable-passthrough-parallel: Resursă asociată din acest modul.lcel-pipe-runnable: Resursă asociată din acest modul.