ग्राफ़ रिट्रीवल बेहतर बनाना

LangChain के साथ Retrieval Augmented Generation (RAG)

Meri Nova

Machine Learning Engineer

तकनीकें

मुख्य सीमा: user → Cypher ट्रांसलेशन की विश्वसनीयता

ग्राफ़ रिट्रीवल सिस्टम सुधारने की रणनीतियाँ:

  • ग्राफ़ स्कीमा फ़िल्टर करना
  • Cypher क्वेरी का वैलिडेशन
  • Few-shot प्रॉम्प्टिंग
LangChain के साथ Retrieval Augmented Generation (RAG)

फ़िल्टरिंग

from langchain_community.chains.graph_qa.cypher import GraphCypherQAChain

llm = ChatOpenAI(api_key="...", model="gpt-4o-mini", temperature=0)

chain = GraphCypherQAChain.from_llm(
graph=graph, llm=llm, exclude_types=["Concept"], verbose=True
)
print(graph.get_schema)
Node properties:
Document {title: STRING, id: STRING, text: STRING, summary: STRING, source: STRING}
Organization {id: STRING}
LangChain के साथ Retrieval Augmented Generation (RAG)

Cypher क्वेरी का वैलिडेशन

  • रिलेशनशिप की direction समझने में कठिनाई
chain = GraphCypherQAChain.from_llm(
    graph=graph, llm=llm, verbose=True, validate_cypher=True
)
  1. नोड्स और रिलेशनशिप्स डिटेक्ट करता है
  2. रिलेशनशिप की direction तय करता है
  3. ग्राफ़ स्कीमा चेक करता है
  4. रिलेशनशिप्स की direction अपडेट करता है
LangChain के साथ Retrieval Augmented Generation (RAG)

Few-shot प्रॉम्प्टिंग

examples = [
    {
        "question": "How many notable large language models are mentioned in the article?",
        "query": "MATCH (m:Concept {id: 'Large Language Model'}) RETURN count(DISTINCT m)",
    },
    {
        "question": "Which companies or organizations have developed the large language models mentioned?",
        "query": "MATCH (o:Organization)-[:DEVELOPS]->(m:Concept {id: 'Large Language Model'}) RETURN DISTINCT o.id",
    },
    {
        "question": "What is the largest model size mentioned in the article, in terms of number of parameters?",
        "query": "MATCH (m:Concept {id: 'Large Language Model'}) RETURN max(m.parameters) AS largest_model",
    },
]
LangChain के साथ Retrieval Augmented Generation (RAG)

Few-shot प्रॉम्प्टिंग लागू करना

from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate

example_prompt = PromptTemplate.from_template( "User input: {question}\nCypher query: {query}" )
cypher_prompt = FewShotPromptTemplate( examples=examples, example_prompt=example_prompt, prefix="You are a Neo4j expert. Given an input question, create a syntactically correct Cypher query to run.\n\nHere is the schema information\n{schema}.\n\n Below are a number of examples of questions and their corresponding Cypher queries.", suffix="User input: {question}\nCypher query: ", input_variables=["question"], )
LangChain के साथ Retrieval Augmented Generation (RAG)

Complete प्रॉम्प्ट

You are a Neo4j expert. Given an input question, create a syntactically correct Cypher query to run.

Below are a number of examples of questions and their corresponding Cypher queries.

User input: How many notable large language models are mentioned in the article?
Cypher query: MATCH (p:Paper) RETURN count(DISTINCT p)

User input: Which companies or organizations have developed the large language models?
Cypher query: MATCH (o:Organization)-[:DEVELOPS]->(m:Concept {id: 'Large Language Model'}) RETURN DISTINCT o.id

User input: What is the largest model size mentioned in the article, in terms of number of parameters?
Cypher query: MATCH (m:Concept {id: 'Large Language Model'}) RETURN max(m.parameters) AS largest_model

User input: How many papers were published in 2016?
Cypher query:
LangChain के साथ Retrieval Augmented Generation (RAG)

Few-shot examples जोड़ना

chain = GraphCypherQAChain.from_llm(
    graph=graph, llm=llm, cypher_prompt=cypher_prompt,
    verbose=True, validate_cypher=True
)
LangChain के साथ Retrieval Augmented Generation (RAG)

अभ्यास करते हैं!

LangChain के साथ Retrieval Augmented Generation (RAG)

Preparing Video For Download...