RAG-Speicher und -Abruf mittels Vektordatenbanken

Entwickeln von LLM-Anwendungen mit LangChain

Jonathan Bennion

AI Engineer & LangChain Contributor

RAG-Entwicklungsschritte

Der allgemeine RAG-Workflow: ein Dokumentenlader, ein Dokumentensplitter und der Speicher- und Abrufprozess.

  • Schwerpunkt dieses Videos: Speicher und Abruf
Entwickeln von LLM-Anwendungen mit LangChain

Was ist eine Vektordatenbank und wozu brauche ich sie?

Ein typischer RAG-Workflow.

Entwickeln von LLM-Anwendungen mit LangChain

Welche Vektordatenbank soll ich nehmen?

 

Die verschiedenen Vektordatenbanken, die es gibt, sind nach Open Source und Closed Source sortiert und auch danach, ob sie nur für Vektordaten gedacht sind oder ob sie einfach nur diese Funktion haben.

 

Zu beachten:

  • Open Source vs. Closed Source (Lizenz)
  • Cloud vs. On-Premises
  • Schlank und trotzdem stark
1 Bildnachweis: Yingjun Wu
Entwickeln von LLM-Anwendungen mit LangChain

Hier sind die Dokumente...

docs
[
    Document(
        page_content="In all marketing copy, TechStack should always be written with the T and S
        capitalized. Incorrect: techstack, Techstack, etc.",
        metadata={"guideline": "brand-capitalization"}
    ),
    Document(
        page_content="Our users should be referred to as techies in both internal and external
        communications.",
        metadata={"guideline": "referring-to-users"}
    )
]
Entwickeln von LLM-Anwendungen mit LangChain

Einrichten einer Chroma-Vektordatenbank

from langchain_openai import OpenAIEmbeddings
from langchain_chroma import Chroma

embedding_function = OpenAIEmbeddings(api_key=openai_api_key, model='text-embedding-3-small')


vectorstore = Chroma.from_documents( docs, embedding=embedding_function, persist_directory="path/to/directory" )
retriever = vectorstore.as_retriever( search_type="similarity", search_kwargs={"k": 2} )
Entwickeln von LLM-Anwendungen mit LangChain

Erstellen einer Prompt-Vorlage

from langchain_core.prompts import ChatPromptTemplate

message = """
Review and fix the following TechStack marketing copy with the following guidelines in consideration:

Guidelines:
{guidelines}

Copy:
{copy}

Fixed Copy:
"""

prompt_template = ChatPromptTemplate.from_messages([("human", message)])
Entwickeln von LLM-Anwendungen mit LangChain

Alles miteinander verketten!

from langchain_core.runnables import RunnablePassthrough

rag_chain = ({"guidelines": retriever, "copy": RunnablePassthrough()}
             | prompt_template
             | llm)

response = rag_chain.invoke("Here at techstack, our users are the best in the world!")
print(response.content)
Here at TechStack, our techies are the best in the world!
Entwickeln von LLM-Anwendungen mit LangChain

Lass uns üben!

Entwickeln von LLM-Anwendungen mit LangChain

Preparing Video For Download...