Vektordatabaser: Pinecone, Weaviate og pgvector · Lektion

Kontekstuel informationshentning

Implementer strategier til at hente den mest relevante kontekst fra Deres vektorstore og bruge den til at udvide LLM-prompts.

Lektion 3 af 411 trin

Kontekstuel informationshentning er en gratis Vektordatabaser: Pinecone, Weaviate og pgvector-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Vektordatabaser: Pinecone, Weaviate og pgvector, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Vektordatabaser: Pinecone, Weaviate og pgvector-kurset indeholder 4 lektioner i alt.

Hvad er konteksthentning?

I et system til Retrieval-Augmented Generation (RAG) har den store sprogmodel (LLM'en) brug for relevante oplysninger for at generere nøjagtige svar.

  • Kontekstuel informationshentning er processen med at finde og hente disse relevante data fra din vektordatabase.
  • Det er forbindelsen mellem brugerens forespørgsel og den viden, der er gemt i dine specialiserede data.

Arbejdsgangen for hentning

Når en bruger stiller et spørgsmål, sker der flere trin for at finde den rette kontekst:

  1. Brugerens spørgsmål (forespørgsel) omdannes til en vektorindlejring.
  2. Denne vektorindlejring for forespørgslen sendes til vektordatabasen.
  3. Vektordatabasen søger efter gemte vektorindlejringer af dokumenter, der ligner vektorindlejringen for forespørgslen mest.
  4. De tekststykker, der er knyttet til disse lignende vektorindlejringer, hentes og sendes til LLM'en.

Grundlæggende om vektorsimilaritet

Kernen i informationshentning er vektorsimilaritet. Din vektordatabase beregner, hvor »tæt« din forespørgselsvektor er på alle de gemte dokumentvektorer.

  • Tættere vektorer betyder større semantisk lighed.
  • Almindelige lighedsmål omfatter cosinuslighed eller euklidisk afstand.
  • Databasen finder effektivt de nærmeste vektorer, som regel ved hjælp af specialiserede indekseringsteknikker.

Enkel Top-K-hentning

Den mest ligetil strategi til informationshentning er Top-K-hentning.

  • Du beder ganske enkelt vektordatabasen om at returnere de K tekststykker fra dokumenter, der ligner din forespørgsel mest.
  • K er et tal, du vælger (f.eks. 3, 5 eller 10), og som angiver, hvor mange kontekststykker du vil give til LLM'en.
  • Selvom metoden er enkel, er det afgørende at vælge den rigtige K for at finde balancen mellem relevans og LLM'ens tokenbegrænsninger.

Demo af Top-K-hentning i Python

Denne enkle Python-kode simulerer et vektorlager og demonstrerer, hvordan hentning med top_k fungerer. Prøv at ændre værdien for top_k!

import math

class SimpleVectorStore:
    def __init__(self):
        self.vectors = {}

    def add_document(self, doc_id, vector, text):
        self.vectors[doc_id] = {"vector": vector, "text": text}

    def _cosine_similarity(self, vec1, vec2):
        dot_product = sum(v1 * v2 for v1, v2 in zip(vec1, vec2))
        magnitude1 = math.sqrt(sum(v**2 for v in vec1))
        magnitude2 = math.sqrt(sum(v**2 for v in vec2))
        if magnitude1 == 0 or magnitude2 == 0:
            return 0.0
        return dot_product / (magnitude1 * magnitude2)

    def query(self, query_vector, top_k=3):
        similarities = []
        for doc_id, data in self.vectors.items():
            sim = self._cosine_similarity(query_vector, data["vector"])
            similarities.append((sim, doc_id, data["text"]))

        similarities.sort(key=lambda x: x[0], reverse=True)
        return [{"id": s[1], "text": s[2], "similarity": s[0]} for s in similarities[:top_k]]

if __name__ == "__main__":
    store = SimpleVectorStore()

    store.add_document("doc1", [0.1, 0.2, 0.3], "The quick brown fox jumps over the lazy dog.")
    store.add_document("doc2", [0.15, 0.25, 0.35], "A fast fox leaps over a sleepy canine.")
    store.add_document("doc3", [0.8, 0.7, 0.9], "Artificial intelligence is transforming industries.")
    store.add_document("doc4", [0.75, 0.85, 0.95], "Machine learning algorithms are key to AI.")

    query_vec = [0.12, 0.22, 0.32] # Simulating an embedding for "fast animal"

    print("--- Top 2 Relevant Chunks ---")
    results = store.query(query_vec, top_k=2)
    for res in results:
        print(f"ID: {res['id']}, Sim: {res['similarity']:.2f}, Text: {res['text']}")

    print("\n--- Top 1 Relevant Chunk ---")
    results_single = store.query(query_vec, top_k=1)
    for res in results_single:
        print(f"ID: {res['id']}, Sim: {res['similarity']:.2f}, Text: {res['text']}")

Opdeling i tekststykker til effektiv informationshentning

Kvaliteten af din informationshentning afhænger i høj grad af, hvordan dine oprindelige dokumenter blev opdelt i tekststykker, før de blev omdannet til vektorindlejringer.

  • Størrelse på tekststykker: Hvis de er for små, kan kontekst gå tabt. Hvis de er for store, kan irrelevante oplysninger blive inkluderet.
  • Overlap: Overlap mellem tekststykker hjælper med at sikre, at vigtige oplysninger ikke bliver delt på tværs af grænser.
  • En god opdeling sikrer, at hvert hentet kontekststykke er meningsfuldt og selvstændigt.

Forbedring af informationshentning med omrangering

Nogle gange er enkel Top-K-hentning ikke nok. De mest »lignende« vektorer er ikke altid de mest relevante i konteksten.

  • O rangering er et valgfrit, men effektivt trin, der udføres efter den indledende informationshentning.
  • Den tager de øverste K tekststykker fra vektordatabasen og bruger en mindre, mere specialiseret model til at vurdere deres relevans mere grundigt.
  • Denne sekundære vurdering hjælper med at frasortere mindre nyttige tekststykker og prioritere virkelig relevante oplysninger.

Behovet for omrangering

Hvorfor har vi brug for omrangering?

  • Vektorsimilaritet kan nogle gange narres af overfladisk semantisk lighed.
  • En omrangeringsmodel, ofte en mindre transformermodel, kan bedre forstå den nuancerede relation mellem forespørgslen og de hentede tekststykker fra dokumenterne.
  • Den hjælper med at sikre, at den kontekst, der gives til LLM'en, ikke blot ligner forespørgslen, men også er meget relevant og nyttig til at besvare brugerens specifikke spørgsmål.

Avancerede begreber inden for informationshentning

Ud over grundlæggende Top-K-hentning og omrangering kan avancerede strategier forbedre informationshentningen yderligere:

  • Udvidelse af forespørgsler: Omskrivning af eller tilføjelse af termer til brugerens oprindelige forespørgsel for at forbedre søgeresultaterne.
  • Hybrid søgning: Kombination af traditionel søgning efter nøgleord (som fuldtekstsøgning) med vektorsimilaritet for at opnå en mere omfattende informationshentning.
  • Disse metoder har til formål at gøre den indledende informationshentning endnu mere robust, før konteksten sendes til LLM'en.

Test din viden

Forestil dig et RAG-system, der først henter 10 tekststykker fra dokumenter ved hjælp af vektorsimilaritet. Hvad er de vigtigste fordele ved at tilføje et omrangeringstrin?

Opsummering af kontekstbaseret informationshentning

Du har lært, hvordan du henter relevant kontekst til RAG-systemer!

  • Kontekstbaseret informationshentning forbinder brugerforespørgsler med gemt viden.
  • Det indebærer at omdanne forespørgsler til vektorindlejringer, forespørge vektordatabasen efter lignende vektorer og hente den tilknyttede tekst.
  • Top-K-hentning er den grundlæggende metode, men god opdeling i tekststykker er afgørende.
  • O rangering kan forfine resultaterne yderligere ved at anvende et sekundært relevansfilter.
  • Avancerede teknikker som udvidelse af forespørgsler og hybrid søgning giver endnu mere avanceret informationshentning.
Gratis at komme i gang

Lær Vektordatabaser: Pinecone, Weaviate og pgvector med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
12
Lektioner
48

Ofte stillede spørgsmål

Er lektionen “Kontekstuel informationshentning” gratis?

Ja — alle 3 lektioner i læringssporet Vektordatabaser: Pinecone, Weaviate og pgvector, inklusive “Kontekstuel informationshentning”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Vektordatabaser: Pinecone, Weaviate og pgvector-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Kontekstuel informationshentning”?

Implementer strategier til at hente den mest relevante kontekst fra Deres vektorstore og bruge den til at udvide LLM-prompts. Du øver dig i Vektordatabaser: Pinecone, Weaviate og pgvector med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Vektordatabaser: Pinecone, Weaviate og pgvector?

Der kræves ingen tidligere erfaring. Vektordatabaser: Pinecone, Weaviate og pgvector på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.

Hvor lang tid tager lektionen “Kontekstuel informationshentning”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Vektordatabaser: Pinecone, Weaviate og pgvector-lektion?

Ja. Alle Vektordatabaser: Pinecone, Weaviate og pgvector-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Oversigt over RAG-systemarkitektur
  2. Integration med LLM-frameworks
  3. Kontekstuel informationshentning
  4. Chunking-strategier til RAG
← Tilbage til Vektordatabaser: Pinecone, Weaviate og pgvector