Llama-Index&neo4jでGraphRAGを構築したら「I am trained on data up to October 2023.」

スポンサーリンク
Python

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>")

... 省略 ...
"""

コメント

タイトルとURLをコピーしました