I had some questions and suggestions, perhaps you want to chat some time.
QQ: in graphrag.full_retriever you fetch the vector store data but don't use it in the method or the returns, looks redundant?
def full_retriever(question: str):
graph_data = graph_retriever(question)
vector_data = [el.page_content for el in vector_retriever.invoke(question)]
final_data = f'''Graph data:
{graph_data}
'''
return final_data
You don't make use of the built in neo4j vector search only the fulltext index - with the vector search you can allow in-graph vector and hybrid search? (you can create vector indexes both for chunks in the lexical graph, for entities in the domain graph and for communities in the topical structures)
right now the graph retriever only uses the direct neighbourhood of the nodes, this could be a good hyperparameter to add
I saw you copied some code from the neo4j-langchain integrations? Was there a reason (i.e. did you make modifications - if so it might be good to discuss to rather contribute them back upstream?)
Thanks for adding GraphRAG to RAGbuilder.
I had some questions and suggestions, perhaps you want to chat some time.
We have documented more GraphRAG patterns, here just in case you want to share your RAG patterns to the catalogue or provide some feedback: