Des vecteurs aux graphes

Retrieval Augmented Generation (RAG) avec LangChain

Meri Nova

Machine Learning Engineer

Limites du RAG vectoriel

Flux de travail RAG typique avec magasin de vecteurs.

Une bulle contenant « thèmes et relations ».

Retrieval Augmented Generation (RAG) avec LangChain

Limites du RAG vectoriel

Flux de travail RAG typique avec magasin de vecteurs.

Une bulle contenant « mise à l'échelle ».

Retrieval Augmented Generation (RAG) avec LangChain

Limites du RAG vectoriel

Flux de travail RAG typique avec magasin de vecteurs.

Une bulle contenant « intégrer des données diverses ».

Retrieval Augmented Generation (RAG) avec LangChain

Bases de données orientées graphe

Un graphe montrant des liens entre personnes, lieux et intérêts.

Retrieval Augmented Generation (RAG) avec LangChain

Bases de données orientées graphe – nœuds

Un graphe montrant des liens entre personnes, lieux et intérêts.

Retrieval Augmented Generation (RAG) avec LangChain

Bases de données orientées graphe – arêtes

Un graphe montrant des liens entre personnes, lieux et intérêts.

Retrieval Augmented Generation (RAG) avec LangChain

Bases de données graphe Neo4j

 

Le logo de Neo4j.

Le logo de LangChain.

Retrieval Augmented Generation (RAG) avec LangChain

Des graphiques aux graphes…

Un graphe montrant des liens entre personnes, lieux et intérêts.

Retrieval Augmented Generation (RAG) avec LangChain

Des graphiques aux graphes…

barcelona_graph.jpg

Retrieval Augmented Generation (RAG) avec LangChain

Des graphiques aux graphes…

barcelona_graph.jpg

Retrieval Augmented Generation (RAG) avec LangChain

Charger et segmenter des pages Wikipédia

from langchain_community.document_loaders import WikipediaLoader
from langchain_text_splitters import TokenTextSplitter

raw_documents = WikipediaLoader(query="large language model").load()

text_splitter = TokenTextSplitter(chunk_size=100, chunk_overlap=20) documents = text_splitter.split_documents(raw_documents[:3]) print(documents[0])
page_content='A large language model (LLM) is a computational model capable of...' 
metadata={'title': 'Large language model',
          'summary': "A large language model (LLM) is...",
          'source': 'https://en.wikipedia.org/wiki/Large_language_model'}
Retrieval Augmented Generation (RAG) avec LangChain

Du texte aux graphes !

from langchain_openai import ChatOpenAI

from langchain_experimental.graph_transformers import LLMGraphTransformer
llm = ChatOpenAI(api_key="...", temperature=0, model_name="gpt-4o-mini")
llm_transformer = LLMGraphTransformer(llm=llm)
graph_documents = llm_transformer.convert_to_graph_documents(documents) print(graph_documents)
Retrieval Augmented Generation (RAG) avec LangChain

Du texte aux graphes !

[GraphDocument(
    nodes=[
        Node(id='Llm', type='Computational model'),
        Node(id='Language Generation', type='Concept'),
        Node(id='Natural Language Processing Tasks', type='Concept'),
        Node(id='Llama Family', type='Computational model'),
        Node(id='Ibm', type='Organization'),
        ..., Node(id='Bert', type='Computational model')],
    relationships=[
        Relationship(source=Node(id='Llm', type='Computational model'),
                     target=Node(id='Language Generation', type='Concept'),
                     type='CAPABLE_OF'),
        ...])]
Retrieval Augmented Generation (RAG) avec LangChain

Passons à la pratique !

Retrieval Augmented Generation (RAG) avec LangChain

Preparing Video For Download...