paint-brush
Сохтани агенти гибридии RAG бо графикҳои Neo4j ва ҷустуҷӯи Milvusаз ҷониби@neo4j
189 хониш

Сохтани агенти гибридии RAG бо графикҳои Neo4j ва ҷустуҷӯи Milvus

аз ҷониби Neo4j8m2024/11/05
Read on Terminal Reader

Хеле дароз; Хондан

Ин дастур сохтани агенти гибридии RAG-ро бо истифода аз Neo4j ва Milvus барои истифода аз пойгоҳи додаҳои графикӣ ва векторӣ, баланд бардоштани дақиқӣ ва мувофиқати посух тавассути усулҳои якҷояи ҷустуҷӯ ва механизмҳои худтаъсис меомӯзад.
featured image - Сохтани агенти гибридии RAG бо графикҳои Neo4j ва ҷустуҷӯи Milvus
Neo4j HackerNoon profile picture
0-item
1-item


Ин мақолаи блог тафсилоти чӣ гуна сохтани агенти GraphRAG бо истифода аз пойгоҳи додаҳои графикии Neo4j ва базаи вектории Milvus . Ин агент қудрати пойгоҳи додаҳои графикӣ ва ҷустуҷӯи векториро барои пешниҳоди ҷавобҳои дақиқ ва мувофиқ ба дархостҳои корбар муттаҳид мекунад. Дар ин мисол, мо LangGraph, Llama 3.1 8B-ро бо Ollama ва GPT-4o истифода мебарем.


Системаҳои анъанавии Ҷустуҷӯи Augmented Generation ( RAG ) танҳо ба он такя мекунанд пойгоҳи додаҳои векторӣ барои гирифтани хуччатхои дахлдор. Муносибати мо тавассути ворид кардани Neo4j барои ба даст овардани муносибатҳо байни субъектҳо ва консепсияҳо, пешниҳоди фаҳмиши дақиқтари иттилоот пеш меравад. Мо мехоҳем бо омезиши ин ду техника як системаи мустаҳкамтар ва иттилоотии RAG эҷод кунем.

Сохтани агенти RAG

Агенти мо се консепсияи калидиро пайгирӣ мекунад: масир, механизмҳои бозгашт ва ислоҳи худ. Ин принсипҳо тавассути як қатор ҷузъҳои LangGraph амалӣ карда мешаванд:


  • Масир - Механизми масирсозии махсус тасмим мегирад, ки дар асоси дархост пойгоҳи векторӣ, графикаи дониш ё маҷмӯи ҳардуро истифода барад.
  • Бозгашт - Дар ҳолатҳое, ки ҷустуҷӯи ибтидоӣ нокифоя аст, агент ба ҷустуҷӯи веб бо истифода аз Tavily бармегардад.
  • Ислоҳи худидоракунӣ - Агент ҷавобҳои худро баҳо медиҳад ва кӯшиш мекунад, ки галлюцинатсияҳо ё нодурустиро ислоҳ кунад.


Пас мо ҷузъҳои дигар дорем, ба монанди:


  • Ҷустуҷӯ - Мо Milvus, як махзани вектории кушодаасос ва баландсифатро барои нигоҳдорӣ ва дарёфт кардани қисмҳои ҳуҷҷат дар асоси шабоҳати семантикӣ ба дархости корбар истифода мебарем.
  • Такмили графикӣ - Neo4j барои сохтани графикаи дониш аз ҳуҷҷатҳои дарёфтшуда истифода мешавад, ки контекстро бо муносибатҳо ва объектҳо ғанӣ мегардонад.
  • Интегратсияи LLMs - Llama 3.1 8B, LLM-и маҳаллӣ, барои тавлиди ҷавобҳо ва арзёбии мувофиқат ва саҳеҳии иттилооти дарёфтшуда истифода мешавад, дар ҳоле ки GPT-4o барои тавлиди Cypher, забони пурсиш, ки аз ҷониби Neo4j истифода мешавад, истифода мешавад.

Архитектураи GraphRAG

Меъмории агенти GraphRAG-и моро метавон ҳамчун ҷараёни корӣ бо якчанд гиреҳҳои ба ҳам алоқаманд тасаввур кард:


  • Масири саволҳо - Агент аввал саволро барои муайян кардани стратегияи беҳтарини ҷустуҷӯ (ҷустуҷӯи вектор, ҷустуҷӯи график ё ҳарду) таҳлил мекунад.
  • Ҷустуҷӯ - Дар асоси қарори масир, ҳуҷҷатҳои дахлдор аз Милвус гирифта мешаванд ё маълумот аз графики Neo4j гирифта мешаванд.
  • Насл - LLM бо истифода аз контексти дарёфтшуда ҷавоб тавлид мекунад.
  • Арзёбӣ - Агент ҷавоби тавлидшударо барои мувофиқат, дақиқӣ ва галлюцинатсияҳои эҳтимолӣ арзёбӣ мекунад.
  • Тозакунӣ (агар лозим бошад) - Агар ҷавоб ғайриқаноатбахш ҳисобида шавад, агент метавонад ҷустуҷӯи худро такмил диҳад ё кӯшиш кунад, ки хатогиҳоро ислоҳ кунад.

Намунаҳои агентҳо

Барои нишон додани имкониятҳои агентҳои LLM-и мо, биёед ду ҷузъи гуногунро дида бароем: Graph Generation ва Composite Agent .

Дар ҳоле ки рамзи пурра дар поёни ин паём мавҷуд аст, ин порчаҳо фаҳмиши беҳтареро дар бораи он ки ин агентҳо дар чаҳорчӯбаи LangChain кор мекунанд, таъмин хоҳанд кард.

Насли график

Ин ҷузъ барои беҳтар кардани раванди ҷавоб ба саволҳо бо истифода аз имкониятҳои Neo4j тарҳрезӣ шудааст. Он ба саволҳо тавассути истифодаи донише, ки дар пойгоҳи додаҳои графикии Neo4j ҷойгир шудааст, ҷавоб медиҳад. Ин аст, ки чӣ тавр кор мекунад:


  1. GraphCypherQAChain - Ба LLM имкон медиҳад, ки бо пойгоҳи додаҳои графикии Neo4j ҳамкорӣ кунад. Он LLM-ро бо ду роҳ истифода мебарад:

    • cypher_llm - Ин мисоли LLM барои тавлиди дархостҳои Cypher барои истихроҷи иттилооти мувофиқ аз график дар асоси саволи корбар масъул аст.

    • Тасдиқ - Боварӣ ҳосил кунед, ки дархостҳои Cypher тасдиқ карда шудаанд, то боварӣ ҳосил кунанд, ки онҳо аз ҷиҳати синтаксисӣ дурустанд.


  2. Ҷустуҷӯи контекст - Дархостҳои тасдиқшуда дар графи Neo4j барои дарёфти контексти зарурӣ иҷро карда мешаванд.


  3. Насли ҷавоб – Модели забон контексти дарёфтшударо барои тавлиди ҷавоб ба саволи корбар истифода мебарад.


 ### Generate Cypher Query llm = ChatOllama(model=local_llm, temperature=0) # Chain graph_rag_chain = GraphCypherQAChain.from_llm( cypher_llm=llm, qa_llm=llm, validate_cypher=True, graph=graph, verbose=True, return_intermediate_steps=True, return_direct=True, ) # Run question = "agent memory" generation = graph_rag_chain.invoke({"query": question})


Ин ҷузъ ба системаи RAG имкон медиҳад, ки ба Neo4j ворид шавад, ки метавонад ба пешниҳоди ҷавобҳои ҳамаҷониба ва дақиқ кӯмак расонад.

Агенти таркибӣ, График ва Вектор 🪄

Дар ин ҷо ҷодугарӣ рӯй медиҳад: Агенти мо метавонад натиҷаҳои Milvus ва Neo4j-ро муттаҳид созад, ки барои фаҳмиши беҳтари маълумот ва ба ҷавобҳои дақиқтар ва нозукиҳо оварда расонад. Ин аст, ки чӣ тавр кор мекунад:


  1. Пешниҳодҳо - Мо дархостеро муайян мекунем, ки ба LLM дастур медиҳад, ки контексти ҳам Милвус ва ҳам Neo4jро барои посух додан ба савол истифода барад.
  2. Ҷустуҷӯ - Агент маълумоти мувофиқро аз Milvus (бо истифода аз ҷустуҷӯи вектор) ва Neo4j (бо истифода аз тавлиди графикӣ) мегирад.
  3. Насли ҷавобҳо - Llama 3.1 8B фаврӣ коркард мекунад ва ҷавоби мухтасар тавлид мекунад, бо истифода аз донишҳои муттаҳидшуда аз пойгоҳи додаҳои векторӣ ва графикӣ бо занҷири таркибӣ.


 ### Composite Vector + Graph Generations cypher_prompt = PromptTemplate( template="""You are an expert at generating Cypher queries for Neo4j. Use the following schema to generate a Cypher query that answers the given question. Make the query flexible by using case-insensitive matching and partial string matching where appropriate. Focus on searching paper titles as they contain the most relevant information. Schema: {schema} Question: {question} Cypher Query:""", input_variables=["schema", "question"], )



 # QA prompt qa_prompt = PromptTemplate( template="""You are an assistant for question-answering tasks. Use the following Cypher query results to answer the question. If you don't know the answer, just say that you don't know. Use three sentences maximum and keep the answer concise. If topic information is not available, focus on the paper titles. Question: {question} Cypher Query: {query} Query Results: {context} Answer:""", input_variables=["question", "query", "context"], ) llm = ChatOpenAI(model="gpt-4o", temperature=0)


 # Chain graph_rag_chain = GraphCypherQAChain.from_llm( cypher_llm=llm, qa_llm=llm, validate_cypher=True, graph=graph, verbose=True, return_intermediate_steps=True, return_direct=True, cypher_prompt=cypher_prompt, qa_prompt=qa_prompt, )


Биёед ба натиҷаҳои ҷустуҷӯи худ назар андозем, то ҷиҳатҳои қавӣ дар базаҳои графикӣ ва векториро барои беҳтар кардани кашфи коғази таҳқиқотии худ муттаҳид кунем.


Мо бо ҷустуҷӯи графикии худ бо истифода аз Neo4j оғоз мекунем:


 # Example input data question = "What paper talks about Multi-Agent?" generation = graph_rag_chain.invoke({"query": question}) print(generation)


 > Entering new GraphCypherQAChain chain... Generated Cypher: cypher MATCH (p:Paper) WHERE toLower(p.title) CONTAINS toLower("Multi-Agent") RETURN p.title AS PaperTitle, p.summary AS Summary, p.url AS URL


 > Finished chain. {'query': 'What paper talks about Multi-Agent?', 'result': [{'PaperTitle': 'Collaborative Multi-Agent, Multi-Reasoning-Path (CoMM) Prompting Framework', 'Summary': 'In this work, we aim to push the upper bound of the reasoning capability of LLMs by proposing a collaborative multi-agent, multi-reasoning-path (CoMM) prompting framework. Specifically, we prompt LLMs to play different roles in a problem-solving team, and encourage different role-play agents to collaboratively solve the target task. In particular, we discover that applying different reasoning paths for different roles is an effective strategy to implement few-shot prompting approaches in the multi-agent scenarios. Empirical results demonstrate the effectiveness of the proposed methods on two college-level science problems over competitive baselines. Our further analysis shows the necessity of prompting LLMs to play different roles or experts independently.', 'URL': 'https://github.com/amazon-science/comm-prompt'}]


Ҷустуҷӯи графикӣ дар дарёфти муносибатҳо ва метамаълумот бартарӣ дорад. Он метавонад ба зудӣ коғазҳоро дар асоси унвонҳо, муаллифон ё категорияҳои пешакӣ муайяншуда муайян кунад ва назари сохтории маълумотро таъмин намояд.


Баъдан, мо ба ҷустуҷӯи вектори худ барои дурнамои дигар муроҷиат мекунем:


 # Example input data question = "What paper talks about Multi-Agent?" # Get vector + graph answers docs = retriever.invoke(question) vector_context = rag_chain.invoke({"context": docs, "question": question})


 > The paper discusses "Adaptive In-conversation Team Building for Language Model Agents" and talks about Multi-Agent. It presents a new adaptive team-building paradigm that offers a flexible solution for building teams of LLM agents to solve complex tasks effectively. The approach, called Captain Agent, dynamically forms and manages teams for each step of the task-solving process, utilizing nested group conversations and reflection to ensure diverse expertise and prevent stereotypical outputs.


Ҷустуҷӯи векторӣ дар фаҳмидани контекст ва шабоҳати семантикӣ воқеан хуб аст. Он метавонад коғазҳои консептуалӣ бо дархост алоқамандро ошкор кунад, ҳатто агар онҳо истилоҳҳои ҷустуҷӯро дарбар надошта бошанд.


Дар ниҳоят, мо ҳарду усули ҷустуҷӯро якҷоя мекунем:


Ин як ҷузъи муҳими агенти RAG-и мост, ки имкон медиҳад, ки пойгоҳи додаҳои векторӣ ва графикиро истифода барем.


 composite_chain = prompt | llm | StrOutputParser() answer = composite_chain.invoke({"question": question, "context": vector_context, "graph_context": graph_context}) print(answer)


 > The paper "Collaborative Multi-Agent, Multi-Reasoning-Path (CoMM) Prompting Framework" talks about Multi-Agent. It proposes a framework that prompts LLMs to play different roles in a problem-solving team and encourages different role-play agents to collaboratively solve the target task. The paper presents empirical results demonstrating the effectiveness of the proposed methods on two college-level science problems.


Бо ҳамгироии ҷустуҷӯҳои графикӣ ва векторӣ, мо ҷонибҳои тавонои ҳарду равишро истифода мебарем. Ҷустуҷӯи графикӣ дақиқиро таъмин мекунад ва муносибатҳои сохториро паймоиш мекунад, дар ҳоле ки ҷустуҷӯи векторӣ тавассути фаҳмиши семантикӣ амиқро илова мекунад.


Ин усули омехта як қатор бартариҳоро пешниҳод мекунад:


  1. Бозхонди беҳтаршуда : Он ҳуҷҷатҳои дахлдорро пайдо мекунад, ки танҳо бо ҳар як усул аз даст дода мешаванд.
  2. Контексти мукаммал : Он фаҳмиши бештареро дар бораи чӣ гуна робитаи ҳуҷҷатҳо бо ҳамдигар таъмин мекунад.
  3. Фасеҳӣ : Он метавонад ба намудҳои гуногуни дархостҳо, аз ҷустуҷӯҳои мушаххаси калимаҳои калидӣ то таҳқиқоти васеътари консептуалӣ мутобиқ шавад.

Ҷамъбасти он

Дар ин паёми блог, мо нишон додем, ки чӣ гуна агенти GraphRAG-ро бо истифода аз Neo4j ва Milvus сохтан мумкин аст. Бо муттаҳид кардани ҷиҳатҳои қавӣ дар пойгоҳи додаҳои графикӣ ва ҷустуҷӯи вектор , ин агент ба дархостҳои корбар ҷавобҳои дақиқ ва мувофиқ медиҳад.


Меъмории агенти RAG-и мо бо масири бахшидашуда, механизмҳои бозгашт ва қобилиятҳои худидоракунии худ онро мустаҳкам ва боэътимод мегардонад. Намунаҳои ҷузъҳои тавлиди График ва Агенти Композитӣ нишон медиҳанд, ки чӣ гуна ин агент метавонад ба пойгоҳи додаҳои векторӣ ва графикӣ ворид шавад, то ҷавобҳои ҳамаҷониба ва нозукиро пешниҳод кунад.


Мо умедворем, ки ин дастур муфид буд ва ба шумо илҳом мебахшад, ки имкониятҳои омезиши пойгоҳи додаҳои графикӣ ва ҷустуҷӯи векторҳоро дар лоиҳаҳои шахсии худ санҷед.


Рамзи ҷорӣ дар GitHub дастрас аст.


Барои гирифтани маълумоти бештар дар бораи ин мавзӯъ, дар NODES 2024 7 ноябр ба мо ҳамроҳ шавед, конфронси ройгони виртуалии таҳиягарони мо оид ба барномаҳои интеллектуалӣ, графикҳои дониш ва AI. Ҳоло сабти ном шавед!

L O A D I N G
. . . comments & more!

About Author

Neo4j HackerNoon profile picture
Neo4j@neo4j
Neo4j is the world's leading graph database, with native graph storage and processing..

ТЕГИ овезон кунед

ИН МАКОЛА ДАР...