paint-brush
Neo4j வரைபடங்கள் மற்றும் மில்வஸ் வெக்டர் தேடலுடன் ஒரு கலப்பின RAG முகவரை உருவாக்குதல்மூலம்@neo4j
புதிய வரலாறு

Neo4j வரைபடங்கள் மற்றும் மில்வஸ் வெக்டர் தேடலுடன் ஒரு கலப்பின RAG முகவரை உருவாக்குதல்

மூலம் Neo4j8m2024/11/05
Read on Terminal Reader

மிக நீளமானது; வாசிப்பதற்கு

இந்த வழிகாட்டி Neo4j மற்றும் Milvus ஐப் பயன்படுத்தி வரைபடம் மற்றும் திசையன் தரவுத்தளங்கள் இரண்டையும் பயன்படுத்தி ஒரு கலப்பின RAG முகவரை உருவாக்க ஆராய்கிறது, ஒருங்கிணைந்த தேடல் முறைகள் மற்றும் சுய-திருத்தும் வழிமுறைகள் மூலம் பதில் துல்லியம் மற்றும் பொருத்தத்தை மேம்படுத்துகிறது.
featured image - Neo4j வரைபடங்கள் மற்றும் மில்வஸ் வெக்டர் தேடலுடன் ஒரு கலப்பின RAG முகவரை உருவாக்குதல்
Neo4j HackerNoon profile picture
0-item
1-item


இந்த வலைப்பதிவு இடுகை Neo4j வரைபட தரவுத்தளம் மற்றும் Milvus திசையன் தரவுத்தளத்தைப் பயன்படுத்தி ஒரு GraphRAG முகவரை எவ்வாறு உருவாக்குவது என்பதை விவரிக்கிறது. பயனர் கேள்விகளுக்கு துல்லியமான மற்றும் பொருத்தமான பதில்களை வழங்க இந்த ஏஜென்ட் வரைபட தரவுத்தளங்கள் மற்றும் திசையன் தேடலின் சக்தியை ஒருங்கிணைக்கிறது. இந்த எடுத்துக்காட்டில், Ollama மற்றும் GPT-4o உடன் LangGraph, Llama 3.1 8B ஐப் பயன்படுத்துவோம்.


பாரம்பரிய மீட்டெடுப்பு ஆக்மென்ட் ஜெனரேஷன் ( RAG ) அமைப்புகள் இதை மட்டுமே நம்பியுள்ளன திசையன் தரவுத்தளங்கள் தொடர்புடைய ஆவணங்களை மீட்டெடுக்க. எங்கள் அணுகுமுறையானது, நிறுவனங்களுக்கும் கருத்துகளுக்கும் இடையிலான உறவுகளைப் பிடிக்க Neo4j ஐ இணைத்து, தகவலைப் பற்றிய நுணுக்கமான புரிதலை வழங்குவதன் மூலம் மேலும் செல்கிறது. இந்த இரண்டு நுட்பங்களையும் இணைப்பதன் மூலம் மிகவும் வலுவான மற்றும் தகவல் தரும் RAG அமைப்பை உருவாக்க விரும்புகிறோம்.

RAG முகவரை உருவாக்குதல்

எங்கள் முகவர் மூன்று முக்கிய கருத்துக்களைப் பின்பற்றுகிறார்: ரூட்டிங், ஃபால்பேக் மெக்கானிசஸ் மற்றும் சுய-திருத்தம். இந்த கொள்கைகள் LangGraph கூறுகளின் தொடர் மூலம் செயல்படுத்தப்படுகின்றன:


  • ரூட்டிங் - ஒரு பிரத்யேக ரூட்டிங் பொறிமுறையானது, வினவலின் அடிப்படையில் திசையன் தரவுத்தளம், அறிவு வரைபடம் அல்லது இரண்டின் கலவையைப் பயன்படுத்த வேண்டுமா என்பதை தீர்மானிக்கிறது.
  • ஃபால்பேக் - ஆரம்ப மீட்டெடுப்பு போதுமானதாக இல்லாத சூழ்நிலைகளில், முகவர் Tavily ஐப் பயன்படுத்தி வலைத் தேடலுக்குத் திரும்புவார்.
  • சுய-திருத்தம் - முகவர் அதன் சொந்த பதில்களை மதிப்பிடுகிறார் மற்றும் மாயத்தோற்றங்கள் அல்லது தவறுகளை சரிசெய்ய முயற்சிக்கிறார்.


எங்களிடம் பிற கூறுகள் உள்ளன, அவை:


  • மீட்டெடுப்பு - பயனரின் வினவலுக்கான சொற்பொருள் ஒற்றுமையின் அடிப்படையில் ஆவணத் துண்டுகளைச் சேமித்து மீட்டெடுக்க திறந்த மூல மற்றும் உயர் செயல்திறன் கொண்ட திசையன் தரவுத்தளமான Milvus ஐப் பயன்படுத்துகிறோம்.
  • வரைபட மேம்பாடு - Neo4j மீட்டெடுக்கப்பட்ட ஆவணங்களிலிருந்து அறிவு வரைபடத்தை உருவாக்க பயன்படுகிறது, உறவுகள் மற்றும் நிறுவனங்களுடன் சூழலை வளப்படுத்துகிறது.
  • LLMs ஒருங்கிணைப்பு - Llama 3.1 8B, ஒரு உள்ளூர் LLM, பதில்களை உருவாக்குவதற்கும், மீட்டெடுக்கப்பட்ட தகவலின் பொருத்தம் மற்றும் துல்லியத்தை மதிப்பிடுவதற்கும் பயன்படுத்தப்படுகிறது, அதே நேரத்தில் Neo4j பயன்படுத்தும் வினவல் மொழியான Cypher ஐ உருவாக்க GPT-4o பயன்படுத்தப்படுகிறது.

கிராஃப்ராக் கட்டிடக்கலை

எங்கள் GraphRAG முகவரின் கட்டமைப்பானது பல ஒன்றோடொன்று இணைக்கப்பட்ட முனைகளைக் கொண்ட ஒரு பணிப்பாய்வு போல் காட்சிப்படுத்தப்படலாம்:


  • கேள்வி ரூட்டிங் - சிறந்த மீட்டெடுப்பு உத்தியை (திசையன் தேடல், வரைபடத் தேடல் அல்லது இரண்டும்) தீர்மானிக்க முகவர் முதலில் கேள்வியை பகுப்பாய்வு செய்கிறார்.
  • மீட்டெடுப்பு - ரூட்டிங் முடிவின் அடிப்படையில், தொடர்புடைய ஆவணங்கள் Milvus இலிருந்து பெறப்படும் அல்லது Neo4j வரைபடத்திலிருந்து தகவல் பிரித்தெடுக்கப்படும்.
  • தலைமுறை - மீட்டெடுக்கப்பட்ட சூழலைப் பயன்படுத்தி LLM ஒரு பதிலை உருவாக்குகிறது.
  • மதிப்பீடு - முகவர் உருவாக்கப்படும் பதிலை பொருத்தம், துல்லியம் மற்றும் சாத்தியமான மாயத்தோற்றம் ஆகியவற்றை மதிப்பிடுகிறார்.
  • சுத்திகரிப்பு (தேவைப்பட்டால்) - பதில் திருப்தியற்றதாகக் கருதப்பட்டால், முகவர் தனது தேடலைச் செம்மைப்படுத்தலாம் அல்லது பிழைகளைத் திருத்த முயற்சி செய்யலாம்.

முகவர்களின் எடுத்துக்காட்டுகள்

எங்கள் LLM முகவர்களின் திறன்களை வெளிப்படுத்த, இரண்டு வெவ்வேறு கூறுகளைப் பார்ப்போம்: Graph Generation மற்றும் Composite Agent .

இந்த இடுகையின் கீழே முழு குறியீடும் கிடைக்கும் போது, இந்த துணுக்குகள் LangChain கட்டமைப்பிற்குள் இந்த முகவர்கள் எவ்வாறு செயல்படுகிறார்கள் என்பதைப் பற்றிய சிறந்த புரிதலை வழங்கும்.

வரைபட உருவாக்கம்

இந்த கூறு Neo4j இன் திறன்களைப் பயன்படுத்தி கேள்வி-பதில் செயல்முறையை மேம்படுத்த வடிவமைக்கப்பட்டுள்ளது. இது Neo4j வரைபட தரவுத்தளத்தில் உட்பொதிக்கப்பட்ட அறிவை மேம்படுத்துவதன் மூலம் கேள்விகளுக்கு பதிலளிக்கிறது. இது எவ்வாறு செயல்படுகிறது என்பது இங்கே:


  1. GraphCypherQAChain - Neo4j வரைபட தரவுத்தளத்துடன் தொடர்பு கொள்ள LLM ஐ அனுமதிக்கிறது. இது LLM ஐ இரண்டு வழிகளில் பயன்படுத்துகிறது:

    • cypher_llm – பயனரின் கேள்வியின் அடிப்படையில் வரைபடத்திலிருந்து தொடர்புடைய தகவலைப் பிரித்தெடுக்க சைபர் வினவல்களை உருவாக்குவதற்கு LLM இன் இந்த நிகழ்வு பொறுப்பாகும்.

    • சரிபார்த்தல் - சைபர் வினவல்கள் தொடரியல் ரீதியாக சரியானவை என்பதை உறுதிப்படுத்த அவை சரிபார்க்கப்பட்டதா என்பதை உறுதிப்படுத்துகிறது.


  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. அறிவுறுத்தல்கள் - கேள்விக்கு பதிலளிக்க Milvus மற்றும் Neo4j இரண்டிலிருந்தும் சூழலைப் பயன்படுத்த LLM க்கு அறிவுறுத்தும் ஒரு வரியை நாங்கள் வரையறுக்கிறோம்.
  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. வளைந்து கொடுக்கும் தன்மை : இது குறிப்பிட்ட முக்கிய தேடல்கள் முதல் பரந்த கருத்தியல் ஆய்வுகள் வரை பல்வேறு வகையான வினவல்களுக்கு ஏற்ப மாற்றியமைக்க முடியும்.

சுருக்கமாக

இந்த வலைப்பதிவு இடுகையில், Neo4j மற்றும் Milvus ஐப் பயன்படுத்தி ஒரு GraphRAG முகவரை எவ்வாறு உருவாக்குவது என்பதைக் காட்டியுள்ளோம். வரைபட தரவுத்தளங்கள் மற்றும் திசையன் தேடலின் பலங்களை இணைப்பதன் மூலம், இந்த முகவர் பயனர் கேள்விகளுக்கு துல்லியமான மற்றும் பொருத்தமான பதில்களை வழங்குகிறது.


எங்கள் RAG ஏஜெண்டின் கட்டமைப்பு, அதன் அர்ப்பணிப்பு ரூட்டிங், ஃபால்பேக் பொறிமுறைகள் மற்றும் சுய-திருத்தும் திறன்களுடன், அதை வலுவானதாகவும் நம்பகமானதாகவும் ஆக்குகிறது. விரிவான மற்றும் நுணுக்கமான பதில்களை வழங்க, திசையன் மற்றும் வரைபட தரவுத்தளங்கள் இரண்டிலும் இந்த முகவர் எவ்வாறு தட்டலாம் என்பதை வரைபட உருவாக்கம் மற்றும் கூட்டு முகவர் கூறுகளின் எடுத்துக்காட்டுகள் விளக்குகின்றன.


இந்த வழிகாட்டி உங்களுக்கு உதவிகரமாக இருந்ததாகவும், வரைபட தரவுத்தளங்கள் மற்றும் திசையன் தேடலை உங்கள் சொந்த திட்டங்களில் இணைப்பதற்கான சாத்தியக்கூறுகளைப் பார்க்க உங்களை ஊக்குவிக்கும் என்றும் நம்புகிறோம்.


தற்போதைய குறியீடு GitHub இல் கிடைக்கிறது.


இந்தத் தலைப்பைப் பற்றி மேலும் அறிய, நவம்பர் 7 அன்று NODES 2024 இல் எங்களுடன் சேருங்கள், அறிவார்ந்த பயன்பாடுகள், அறிவு வரைபடங்கள் மற்றும் 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..

ஹேங் டேக்குகள்

இந்த கட்டுரையில் வழங்கப்பட்டது...