참고소스 수정본
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
"""End to end example of building a RAG pipeline backed by a Neo4j database.
|
||||
Requires OPENAI_API_KEY to be in the env var.
|
||||
|
||||
This example illustrates:
|
||||
- VectorCypherRetriever with a custom formatter function to extract relevant
|
||||
context from neo4j result
|
||||
- Use of a custom prompt for RAG
|
||||
- Logging configuration
|
||||
"""
|
||||
|
||||
import neo4j
|
||||
from neo4j_graphrag.embeddings.openai import OpenAIEmbeddings
|
||||
from neo4j_graphrag.generation import GraphRAG, RagTemplate
|
||||
from neo4j_graphrag.llm import OpenAILLM
|
||||
from neo4j_graphrag.retrievers import VectorCypherRetriever
|
||||
|
||||
URI = "neo4j://localhost:7687"
|
||||
AUTH = ("neo4j", "password")
|
||||
DATABASE = "neo4j"
|
||||
INDEX = "moviePlotsEmbedding"
|
||||
|
||||
|
||||
driver = neo4j.GraphDatabase.driver(
|
||||
URI,
|
||||
auth=AUTH,
|
||||
)
|
||||
|
||||
embedder = OpenAIEmbeddings()
|
||||
|
||||
retriever = VectorCypherRetriever(
|
||||
driver,
|
||||
index_name=INDEX,
|
||||
retrieval_query="WITH node, score RETURN node.title as title, node.plot as plot",
|
||||
embedder=embedder,
|
||||
neo4j_database=DATABASE,
|
||||
)
|
||||
|
||||
llm = OpenAILLM(model_name="gpt-5", model_params={"temperature": 0})
|
||||
|
||||
template = RagTemplate(
|
||||
template="""You are an expert at movies and actors. Your task is to
|
||||
answer the user's question based on the provided context. Use only the
|
||||
information within that context.
|
||||
|
||||
Context:
|
||||
{context}
|
||||
|
||||
Question:
|
||||
{query_text}
|
||||
|
||||
Answer:
|
||||
"""
|
||||
)
|
||||
|
||||
rag = GraphRAG(retriever=retriever, llm=llm, prompt_template=template)
|
||||
|
||||
result = rag.search(
|
||||
"Tell me more about Avatar movies",
|
||||
return_context=True,
|
||||
)
|
||||
print(result.answer)
|
||||
|
||||
driver.close()
|
||||
Reference in New Issue
Block a user