Stockage et récupération RAG à l'aide de bases de données vectorielles

Développement d'applications LLM avec LangChain

Jonathan Bennion

AI Engineer & LangChain Contributor

Étapes du développement RAG

Le flux de travail général du RAG : un chargeur de documents, un diviseur de documents et le processus de stockage et de récupération.

  • Thème de cette vidéo : stockage et récupération
Développement d'applications LLM avec LangChain

Qu'est-ce qu'une base de données vectorielle et pourquoi en ai-je besoin ?

Un flux de travail RAG classique.

Développement d'applications LLM avec LangChain

Quelle base de données vectorielle dois-je utiliser ?

 

Le panorama des différentes bases de données vectorielles disponibles, classées selon qu'elles sont open source ou propriétaires, et selon qu'il s'agit de bases de données vectorielles dédiées ou qu'elles prennent simplement en charge cette opération.

 

À prendre en considération :

  • Open source et source fermée (licence)
  • Cloud ou sur site
  • Légère ou puissante
1 Crédit d'image : Yingjun Wu
Développement d'applications LLM avec LangChain

Veuillez trouver ci-dessous les documents...

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"}
    )
]
Développement d'applications LLM avec LangChain

Création d'une base de données de vecteurs Chroma

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} )
Développement d'applications LLM avec LangChain

Création d'un modèle de prompts

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)])
Développement d'applications LLM avec LangChain

Enchaînons tout cela !

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!
Développement d'applications LLM avec LangChain

Passons à la pratique !

Développement d'applications LLM avec LangChain

Preparing Video For Download...