RAG-opslag en -opvraging met vectordatabases

LLM-toepassingen ontwikkelen met LangChain

Jonathan Bennion

AI Engineer & LangChain Contributor

RAG-ontwikkelstappen

De algemene RAG-workflow: een documentloader, een documentsplitser, en het opslag- en opvraagproces.

  • Focus van deze video: opslag en opvraging
LLM-toepassingen ontwikkelen met LangChain

Wat is een vectordatabase en waarom heb ik die nodig?

Een typische RAG-workflow.

LLM-toepassingen ontwikkelen met LangChain

Welke vectordatabase moet ik kiezen?

 

Het landschap van beschikbare vectordatabases, gesplitst in open/closed source en dedicated vs. ondersteunend.

 

Om te overwegen:

  • Open source vs. closed source (licentie)
  • Cloud vs. on-premises
  • Lichtgewicht vs. krachtig
1 Beeldcredits: Yingjun Wu
LLM-toepassingen ontwikkelen met LangChain

Maak kennis met de documenten...

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"}
    )
]
LLM-toepassingen ontwikkelen met LangChain

Een Chroma-vectordatabase opzetten

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} )
LLM-toepassingen ontwikkelen met LangChain

Een prompttemplate bouwen

from langchain_core.prompts import ChatPromptTemplate

message = """
Beoordeel en verbeter de volgende TechStack-marketingtekst volgens deze richtlijnen:

Richtlijnen:
{guidelines}

Tekst:
{copy}

Verbeterde tekst:
"""

prompt_template = ChatPromptTemplate.from_messages([("human", message)])
LLM-toepassingen ontwikkelen met LangChain

Alles aan elkaar koppelen

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!
LLM-toepassingen ontwikkelen met LangChain

Laten we oefenen!

LLM-toepassingen ontwikkelen met LangChain

Preparing Video For Download...