Des vecteurs aux graphes

Retrieval Augmented Generation (RAG) avec LangChain

Meri Nova

Machine Learning Engineer

Limites du RAG vectoriel

Le workflow RAG typique avec base vectorielle.

Une bulle contenant « thèmes et relations ».

Retrieval Augmented Generation (RAG) avec LangChain

Limites du RAG vectoriel

Le workflow RAG typique avec base vectorielle.

Une bulle contenant « scalabilité ».

Retrieval Augmented Generation (RAG) avec LangChain

Limites du RAG vectoriel

Le workflow RAG typique avec base vectorielle.

Une bulle contenant « intégration de données diverses ».

Retrieval Augmented Generation (RAG) avec LangChain

Bases de données graphe

Un graphe montrant des liens entre personnes, lieux et centres d’intérêt.

Retrieval Augmented Generation (RAG) avec LangChain

Bases de données graphe — nœuds

Un graphe montrant des liens entre personnes, lieux et centres d’intérêt.

Retrieval Augmented Generation (RAG) avec LangChain

Bases de données graphe — arêtes

Un graphe montrant des liens entre personnes, lieux et centres d’intérêt.

Retrieval Augmented Generation (RAG) avec LangChain

Bases de données graphe Neo4j

 

Le logo Neo4j.

Le logo LangChain.

Retrieval Augmented Generation (RAG) avec LangChain

Des graphiques aux graphes…

Un graphe montrant des liens entre personnes, lieux et centres d’intérêt.

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 Wikipedia

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...