RAG-lagring och hämtning med vektordatabaser

Utveckla LLM-applikationer med LangChain

Jonathan Bennion

AI Engineer & LangChain Contributor

RAG-utvecklingssteg

Det generella RAG-arbetsflödet: en dokumentladdare, en dokumentdelare samt lagrings- och hämtningsprocessen.

  • Fokus i den här videon: lagring och hämtning
Utveckla LLM-applikationer med LangChain

Vad är en vektordatabas och varför behöver jag en?

Ett typiskt RAG-arbetsflöde.

Utveckla LLM-applikationer med LangChain

Vilken vektordatabas ska jag använda?

 

Landskapet av tillgängliga vektordatabaser, uppdelat efter öppen källkod och sluten källkod, samt om de är dedikerade vektordatabaser eller bara stöder den operationen.

 

Värt att överväga:

  • Öppen källkod vs. sluten källkod (licens)
  • Molnbaserad vs. lokal installation
  • Lättviktig vs. kraftfull
1 Bildkälla: Yingjun Wu
Utveckla LLM-applikationer med LangChain

Bekanta dig med dokumenten...

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"}
    )
]
Utveckla LLM-applikationer med LangChain

Konfigurera en Chroma-vektordatabas

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} )
Utveckla LLM-applikationer med LangChain

Bygg en promptmall

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)])
Utveckla LLM-applikationer med LangChain

Sätt ihop kedjan!

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!
Utveckla LLM-applikationer med LangChain

Nu kör vi en övning!

Utveckla LLM-applikationer med LangChain

Preparing Video For Download...