Llama-Indexのドキュメントにある「GraphRAG Implementation with LlamaIndex – V2」を参考にNeo4jを用いたGraphRAGを構築しようとした際にうまく回答してくれませんでした。
全ての回答が
I am trained on data up to October 2023.
おーい….
デバッグしていくと、正規表現でのリレーションの抽出が上手くできていませんでした。
使用する正規表現のそもそものバグ、並びに日本語に対応できていなかったことが原因と思われます。
本記事ではその対応方法をまとめます。
結論
GraphRAGQueryEngineクラスの、以下の正規表現を変更します。
節:GraphRAGQueryEngine
pattern = r"(\w+(?:\s+\w+)*)\s*\({[^}]*}\)\s*->\s*([^(]+?)\s*\({[^}]*}\)\s*->\s*(\w+(?:\s+\w+)*)"
を以下に修正
pattern = r"(\w+(?:\s+\w+)*)\s*->\s*(\w+(?:\s+\w+)*)\s*->\s*(\w+(?:\s+\w+)*)"
節:Build End to End GraphRAG Pipeline
KG_TRIPLET_EXTRACT_TMPL = """
... 省略 ...
Format each relationship as ("relationship"$$$$<source_entity>$$$$<target_entity>$$$$<relation>$$$$<relationship_description>)
... 省略 ...
"""
を以下に修正(「”」が足りない)
KG_TRIPLET_EXTRACT_TMPL = """
... 省略 ...
Format each relationship as ("relationship"$$$$"<source_entity>"$$$$"<target_entity>"$$$$"<relation>"$$$$"<relationship_description>")
... 省略 ...
"""
コメント