見出し画像

neo4j x langchainでGraphRAG試してみた

GraphRAGの記事をいくつか見て、自分もナレッジグラフを触ってみたくなったのでneo4jを試してみました。
関係性に強そうなので物語の登場人物や出来事に強いのでは?という気持ち

コードはこちらの記事を参考にしました。

グラフ見てるだけでも面白い
祝宴ー>大雨で不吉さを示しているのがグラフ上に現れてる


質問も適当にしてみました

chain.invoke({"question": "走れメロスの登場人物一覧は?"})

「走れメロス」の登場人物には、メロス、邪智暴虐の王、セリヌンティウス、フィロストラトス、妹、花婿、花嫁、村人たち、そして神々が含まれます。

途中のソースは以下

Search query: 走れメロスの登場人物一覧は? Structured data: メロス - OPPOSES -> 邪智暴虐 メロス - OPPOSES -> 王 メロス - TRAVELS_TO -> シラクスの市 メロス - LIVES_WITH -> 妹 メロス - VISITED -> 市 メロス - FRIEND -> セリヌンティウス メロス - FRIEND -> フィロストラトス メロス - CONFRONT -> ディオニス メロス - POSSESS -> 短剣 メロス - 救う -> 市 メロス - 対話 -> 王 メロス - 家族 -> 妹 メロス - SIBLING -> 妹 メロス - SIBLING -> 妹たち メロス - EXECUTES -> 身代りの男 メロス - 友 -> セリヌンティウス メロス - 到着した -> 村 メロス - VISIT -> 花婿の家 メロス - INFORM -> 村 メロス - DECORATE -> 神々の祭壇 メロス - PREPARE -> 祝宴の席 メロス - 思い出す -> 結婚式 メロス - 近寄る -> 花嫁 メロス - 兄弟関係 -> おまえの兄 メロス - TALKED_TO -> 花婿 メロス - TALKED_TO -> 花嫁 メロス - MENTIONED -> 兄 メロス - OWNS -> 羊 メロス - GREETS -> 村人たち メロス - 対立 -> 王 メロス - 救助 -> 友 メロス - 出発 -> ふるさと メロス - 到着 -> 隣村 メロス - DESTINATION -> 王城 メロス - 呼びかけ -> ゼウス メロス - 行き着く -> 王城 メロス - 死ぬ -> 佳い友達 メロス - 祈り -> 神々 メロス - 発揮 -> 愛 メロス - 発揮 -> 誠 メロス - すがりつく -> 対岸の樹木の幹 メロス - GIVES_LIFE_TO -> 王 メロス - FIGHTS -> 山賊 メロス - EXPERIENCES -> 午後の灼熱の太陽 メロス - EXPERIENCES -> 肉体の疲労 メロス - EXPERIENCES -> 悪魔の囁き メロス - HAS_FRIEND -> 愛する友 メロス - IDENTIFIES_AS -> 稀代の不信の人間 メロス - IDENTIFIES_AS -> 真の勇者 メロス - 自己認識 -> 裏切り者 Unstructured data: text: い。走るがいい。」  言うにや及ぶ。まだ陽は沈まぬ。最後の死力を尽して、メロスは走った。メロスの頭は、からっぽだ。何一つ考えていない。ただ、わけのわからぬ大きな力にひきずられて走った。陽は、ゆらゆら地平線に没し、まさに最後の一片の残光も、消えようとした時、メロスは疾風の如く刑場に突入した。間に合った。 「待て。その人を殺してはならぬ。メロスが帰って来た。約束のとおり、いま、帰って来た。」と大声で刑場の群衆にむかって叫んだつもりであったが、喉《のど》がつぶれて嗄《しわが》れた声が幽《かす》かに出たばかり、群衆は、ひとりとして彼の到着に気がつかない。すでに磔の柱が高々と立てられ、縄を打たれたセリヌンティウスは、徐々に釣り上げられてゆく。メロスはそれを目撃して最後の勇、先刻、濁流を泳いだように群衆を掻きわけ、掻きわけ#Document text: 。メロスには父も、母も無い。女房も無い。十六の、内気な妹と二人暮しだ。この妹は、村の或る律気な一牧人を、近々、花婿《はなむこ》として迎える事になっていた。結婚式も間近かなのである。メロスは、それゆえ、花嫁の衣裳やら祝宴の御馳走やらを買いに、はるばる市にやって来たのだ。先ず、その品々を買い集め、それから都の大路をぶらぶら歩いた。メロスには竹馬の友があった。セリヌンティウスである。今は此のシラクスの市で、石工をしている。その友を、これから訪ねてみるつもりなのだ。久しく逢わなかったのだから、訪ねて行くのが楽しみである。歩いているうちにメロスは、まちの様子を怪しく思った。ひっそりしている。もう既に日も落ちて、まちの暗いのは当りまえだが、けれども、なんだか、夜のせいばかりでは無く、市全体が、やけに寂しい。のんきなメロスも、だんだん不安になって来た。�#Document text: 走れメロス 太宰治 ------------------------------------------------------- 【テキスト中に現れる記号について】 《》:ルビ (例)邪智暴虐《じゃちぼうぎゃく》 :ルビの付く文字列の始まりを特定する記号 (例)疲労|困憊こんぱい [#]:入力者注 主に外字の説明や、傍点の位置の指定 (例)[#地から1字上げ] -------------------------------------------------------  メロスは激怒した。必ず、かの邪智暴虐《じゃちぼうぎゃく》の王を除かなければならぬと決意した。メロスには政治がわからぬ。メロスは、村の牧人である。笛を吹き、羊と遊んで暮して来た。けれども邪悪に対しては、人一倍に敏感であった。きょう未明メロスは村を出発し、野を越え山越え、十里はなれた此《こ》のシラクスの市にやって来た。メロスには父も、母も無い。女房も�#Document text: 出発すれば、約束の刻限までには十分間に合う。きょうは是非とも、あの王に、人の信実の存するところを見せてやろう。そうして笑って磔の台に上ってやる。メロスは、悠々と身仕度をはじめた。雨も、いくぶん小降りになっている様子である。身仕度は出来た。さて、メロスは、ぶるんと両腕を大きく振って、雨中、矢の如く走り出た。  私は、今宵、殺される。殺される為に走るのだ。身代りの友を救う為に走るのだ。王の奸佞《かんねい》邪智を打ち破る為に走るのだ。走らなければならぬ。そうして、私は殺される。若い時から名誉を守れ。さらば、ふるさと。若いメロスは、つらかった。幾度か、立ちどまりそうになった。えい、えいと大声挙げて自身を叱りながら走った。村を出て、野を横切り、森をくぐり抜け、隣村に着いた頃には、雨も止《や》

chain.invoke({"question": "メロスはなぜ逃げなかった?"})

メロスは妹のために約束を守るため、逃げなかった。彼は三日間で帰ると誓い、その約束を果たすために全力で走った。

webのChatGPTは知っているかどうか試しました。

だいたい合ってる

chain.invoke({"question": "メロスがした約束は?"})

メロスがした約束は、身代わりの友を救うために王のもとに戻ることです。


chain.invoke({"question": "セリヌンティウスの弟子は誰?"})

セリヌンティウスの弟子はフィロストラトスです。

web版だと誤答したのでナレッジグラフの強みが出たよう。

普通のRAGも動かしてみて、答えられるか見てみます。

RAGの構築はこの記事のコードを使用

セリヌンティウスの弟子はフィロストラトスです。

正答してしまったのでもうちょっと凝った質問を考えてみます。
「王ディオニスは、メロスとセリヌンティウスの絆を目の当たりにしてどのように反応し、何を言いましたか?」に対して

GraphRAG

王ディオニスは、メロスとセリヌンティウスの絆を目の当たりにして、彼らの心に勝ったと認め、信実が空虚な妄想ではないと感じました。そして、彼は「どうか、わしをも仲間に入れてくれまいか」と願い出ました。

「に」がちょっと気になるけど簡潔で合ってそう。

ハイブリッド検索RAG

王ディオニスは、メロスとセリヌンティウスの絆を目の当たりにして、最初は驚きと憐れみの感情を抱きました。彼は「おまえがか?」と嘲笑し、メロスに対して「仕方の無いやつじゃ。おまえには、わしの孤独がわからぬ。」と語ります。この言葉から、ディオニスはメロスの行動を理解できず、彼の純粋な友情や信頼を嘲るような態度を示しています。しかし、最終的にはメロスとセリヌンティウスの信実が彼の心に影響を与え、「おまえらの望みは叶ったぞ。おまえらは、わしの心に勝ったのだ。」と認める場面も描かれています。これにより、ディオニスは自らの誤りを認識し、彼らの友情を称賛するようになります。

前半が不要ですが「おまえらの望みは叶ったぞ。おまえらは、わしの心に勝ったのだ。」は合ってそう。
「どうか、わしをも仲間に入れてくれまいか」は入っていない。


「王が仲良いのは誰?」に対して

GraphRAG

王が仲良いのは臣下です。

ハイブリッド検索RAG

王が仲良くしているのは、暴君ディオニスです。彼はメロスに対して冷酷で疑い深い性格を持っており、信頼を失うことを恐れています。メロスはディオニスに対して反発し、彼の残虐さを非難していますが、王はメロスの忠誠心を試す形で、彼に身代わりの友人セリヌンティウスを人質として残すことを要求します。

こちらは完全に間違い(ディオニスは王自身)

やっぱり関係性とかにはGraphRAGが強いらしい

いいなと思ったら応援しよう!

大曽根宏幸
サポートありがとうございます!