Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Question]: Got empty response when using KnowledgeGraphRAGRetriever with Neo4jGraphStore #13397

Open
1 task done
oat-eknarin-hugeman opened this issue May 9, 2024 · 3 comments
Labels
question Further information is requested

Comments

@oat-eknarin-hugeman
Copy link

Question Validation

  • I have searched both the documentation and discord for an answer.

Question

Hi, at the moment I want to use KnowledgeGraphRAGRetriever with Knowledge graph store Neo4J.

I followed the tutorial https://docs.llamaindex.ai/en/stable/examples/query_engine/knowledge_graph_rag_query_engine/ by used Neo4JGraphStore instead of Nebular. However, My results is
llama_index.core.indices.knowledge_graph.retrievers:> No knowledge sequence extracted from entities. with empty response.

I try to configure Neo4JGraphStore by changed node_label but it still return same as above response.
Do you have any suggestion to let me succeed this?

Here is my code
`from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core import ServiceContext, StorageContext
from llama_index.graph_stores.neo4j import Neo4jGraphStore

Set up LLM and embeddings

llm = OpenAI(model_name="gpt-4-turbo")
embed_model = OpenAIEmbedding(model="text-embedding-ada-002")
Settings.llm = llm
Settings.embed_model=embed_model
graph_store = Neo4jGraphStore(
username="xxxx",
password="xxxx",
url="xxxx",
database="xxxx"
)
storage_context = StorageContext.from_defaults(graph_store=graph_store)

Create the KnowledgeGraphRAGRetriever

rag_retriever = KnowledgeGraphRAGRetriever(
storage_context=storage_context,
llm=llm,
verbose=True,
)

Query the retriever

result = rag_retriever.retrieve("Summary total sales order")
print(result)`

Here is the result
Screenshot 2567-05-09 at 22 06 37

@oat-eknarin-hugeman oat-eknarin-hugeman added the question Further information is requested label May 9, 2024
Copy link

dosubot bot commented May 9, 2024

To address the issue where the KnowledgeGraphRAGRetriever returns an empty response with your Neo4J graph store, consider the following steps:

  1. Check Entity Extraction: Ensure the entity extraction process is correctly identifying entities within your queries. This is crucial for retrieving knowledge sequences.

  2. Graph Store Configuration: Confirm your Neo4JGraphStore is correctly configured, populated, and that the node labels match those expected by the retriever.

  3. Node Labels and Relations: Verify the labels used in your Neo4J graph store match those expected by the retriever. A mismatch in labels can prevent the retriever from finding knowledge sequences.

  4. Query Depth: Review the graph_traversal_depth parameter to ensure it's set appropriately for your use case. An incorrect depth can limit the retriever's ability to find relevant knowledge sequences.

  5. Verbose Logging: Increase logging verbosity to get detailed output during the retrieval process, helping identify where the process fails.

  6. Custom Functions: If using custom functions for entity extraction or synonym expansion, test them independently to ensure they're functioning as expected.

  7. Graph Schema: If your graph's schema has changed, make sure to update the retriever's configuration accordingly.

By following these steps and ensuring each component is correctly configured, you should be able to successfully retrieve knowledge sequences from your Neo4J graph store. For more detailed guidance, refer to the source code of the KnowledgeGraphRAGRetriever and Neo4JGraphStore in the LlamaIndex repository.

Details

Sources


About Dosu
This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

To continue the conversation, mention @dosu.

@oat-eknarin-hugeman
Copy link
Author

oat-eknarin-hugeman commented May 9, 2024

How do I check entity extraction process? @dosu

Copy link

dosubot bot commented May 9, 2024

To check the entity extraction process in your setup, you'll want to focus on several key areas to ensure that the KnowledgeGraphRAGRetriever is able to correctly identify and retrieve entities from your Neo4J graph store. Here's a structured approach to troubleshooting and validating this process:

  1. Debug Entity Extraction and Synonym Expansion: Start by ensuring that the entity extraction mechanism is accurately identifying entities within your queries. If the system is not correctly recognizing entities or their synonyms, it won't be able to retrieve relevant knowledge sequences. You might need to look into how entities are being extracted from the query text and ensure that this process aligns with the data in your Neo4J graph.

  2. Verify Graph Store Connection: Double-check your Neo4J connection details (username, password, URL, and database) to ensure there are no issues with connectivity. A misconfiguration here could prevent the retriever from accessing the graph store altogether.

  3. Inspect Graph Schema Compatibility: Your Neo4J graph schema should match what the KnowledgeGraphRAGRetriever expects in terms of node labels and relationship types. Use methods like refresh_schema in your Neo4jGraphStore to verify that the schema is compatible with your retriever's configuration.

  4. Review Query Parameters: The depth and limit parameters in methods like get_rel_map are crucial for determining how far the retriever looks into the graph and how many nodes it considers. Adjusting these parameters might help in retrieving more relevant information.

  5. Utilize Detailed Logging: Implement detailed logging within your application to get more insights into the retrieval process. This can help identify where the process might be failing, such as issues with entity extraction or querying the graph store. You can enable detailed logging by setting the logging level to DEBUG:

    import logging
    logging.basicConfig(level=logging.DEBUG)
  6. Manually Test Neo4J Queries: To ensure that your Neo4J graph store contains the expected nodes and relationships, manually execute queries against it. This can help confirm that the data structure matches what the retriever is designed to work with.

  7. Check Neo4J Configuration: Make sure that the node_label configuration in your Neo4jGraphStore accurately reflects the labels in your graph. If there's a mismatch between the expected labels and the actual labels in your graph, the retriever might not find any relevant nodes to return.

By systematically going through these steps, you should be able to identify and resolve the issue causing the empty response from your KnowledgeGraphRAGRetriever. This process involves both verifying the setup of your Neo4J graph store and ensuring that the entity extraction process is functioning as expected.

Details

About Dosu
This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

To continue the conversation, mention @dosu.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

1 participant