Ahogrammer

Deep Dive Into NLP, ML and Cloud

ナレッジグラフを用いたRAGの改善

RAG(Retrieval Augmented Generation)は大規模言語モデル(LLM)の性能を改善するための手法の1つであり、質問に対する回答を生成する際に、外部知識源から情報を取り込みます。 これにより、LLM 自体で学習できる情報量に制限されることなく、より正確で詳細な回答を生成することができます。

よく使われているRAGでは、外部知識源として検索エンジンにテキストをインデックスしておき、質問に関連するテキストをベクトル検索や全文検索を用いて取得します。しかし、構造化データを扱うことには苦労するため、質問によっては回答が不十分、あるいはまったく回答できないことに繋がります。

これらの問題を克服するために、ナレッジグラフを用いたRAGが構築されることがあります。ナレッジグラフでは、エンティティとその間の関係がグラフ構造で表現されており、単純な検索を用いた場合には回答できないような複雑な質問にも対応できます。

本記事では、ナレッジグラフを用いた RAG モデルの改善について紹介します。 具体的には、以下の内容について解説します。

  • Neo4jのセットアップ
  • ナレッジグラフの構築
  • ナレッジグラフを用いたRAGの構築
続きを読む

Azure AI Searchを使った同義語によるクエリ拡張とその効果

PythonからAzure AI Searchのシノニムマップを作成し、クエリ拡張をして、その効果を日本語の質問応答データセットで確認してみました。昔からある機能で、とくに何か新しいことをしているわけでもないのですが、使いそうな機会があったので試してみました。

本記事の構成は以下のとおりです。

  • シノニムマップ
  • シノニムマップの作成
  • インデックスの作成
  • 実験設定
  • 実験結果
  • 参考資料
続きを読む

Chain-of-Tableを使った表データに対する推論

RAGを作っていると、論文に出てくる表データを読み取って回答してもらう等、表データを扱いたくなってくる場面が出てきます。そんな欲求を頭の片隅に置いておいたところ、Chain-of-Tableと呼ばれるプロンプトの手法を見かけたので試してみました。

本記事の構成は以下のとおりです。

  • Chain-of-Tableとは
  • Chain-of-Tableの実装
  • 参考資料
続きを読む