タグ

ブックマーク / hironsan.hatenablog.com (11)

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

    RAG(Retrieval Augmented Generation)は大規模言語モデル(LLM)の性能を改善するための手法の1つであり、質問に対する回答を生成する際に、外部知識源から情報を取り込みます。 これにより、LLM 自体で学習できる情報量に制限されることなく、より正確で詳細な回答を生成することができます。 よく使われているRAGでは、外部知識源として検索エンジンにテキストをインデックスしておき、質問に関連するテキストをベクトル検索や全文検索を用いて取得します。しかし、構造化データを扱うことには苦労するため、質問によっては回答が不十分、あるいはまったく回答できないことに繋がります。 これらの問題を克服するために、ナレッジグラフを用いたRAGが構築されることがあります。ナレッジグラフでは、エンティティとその間の関係がグラフ構造で表現されており、単純な検索を用いた場合には回答できないよ

    ナレッジグラフを用いたRAGの改善 - Ahogrammer
  • Chain-of-Tableを使った表データに対する推論 - Ahogrammer

    RAGを作っていると、論文に出てくる表データを読み取って回答してもらう等、表データを扱いたくなってくる場面が出てきます。そんな欲求を頭の片隅に置いておいたところ、Chain-of-Tableと呼ばれるプロンプトの手法を見かけたので試してみました。 記事の構成は以下のとおりです。 Chain-of-Tableとは Chain-of-Tableの実装 参考資料 Chain-of-Tableとは Chain-of-Tableとは、列の追加、行の選択、グループ化、ソート等の操作を段階的にしていくことで、表データを少しずつ理解しクエリに回答する手法です。以下の例では、表データに対して「最も多くのサイクリストがトップ3に入った国は?」という質問をする例です。一般的な推論やProgram-aided Reasoningでは回答に失敗している一方、Chain-of-Tableでは、「列の作成」「行の選択

    Chain-of-Tableを使った表データに対する推論 - Ahogrammer
    secondlife
    secondlife 2024/01/16
    table data から生成AIで適切に回答生成する
  • 意味的知識グラフとApache Solrを使った関連語検索の実装 - Ahogrammer

    Manningから出版予定の『AI-Powered Search』(AIを活用した情報検索の意)を冬休み中に読んでいたら、その中で意味的知識グラフ(Semantic Knowledge Graph)と呼ばれるデータ構造について説明していて、関連語の計算やクエリ拡張などに使えるということで興味深かったので紹介しようと思います。最初に意味的知識グラフについて説明したあと、日語のデータセットに対して試してみます。 AI-Powered Search(https://www.manning.com/books/ai-powered-search) 記事の構成は以下のとおりです。 意味的知識グラフとは 意味的知識グラフを用いた関連語の計算 参考資料 意味的知識グラフとは 知識グラフと聞くと、固有表現認識や関係抽出、OpenIEを使って構築するグラフを思い浮かべる方もいると思うのですが、意味的知識

    意味的知識グラフとApache Solrを使った関連語検索の実装 - Ahogrammer
  • 日本語版のColBERTを検索に使ってみる - Ahogrammer

    冬休み中に日語版のColBERTであるJaColBERTが公開されていたので試してみました。ColBERTは、論文を読んでいるときに名前が出てくることがあるので試してみたかったのですが、これで試せるようになりました。 ColBERTとは ColBERTは2020年に提案されたモデルで、以下の図に示すようなアーキテクチャになっています[1]。クエリと文書をそれぞれ別のエンコーダーで埋め込み、クエリ中の各トークンの埋め込みと文書の各トークンの埋め込みの間で最大類似度を計算し、その総和をスコアとしています。 ColBERTのアーキテクチャ。画像は[1]より引用。 JaColBERTは、MS MARCOパッセージランキングデータセットを機械翻訳して作成した多言語版データセットであるmMARCOの日語部分を用いて学習されています[2]。元のモデルとしては、東北大学が公開しているbert-base

    日本語版のColBERTを検索に使ってみる - Ahogrammer
    secondlife
    secondlife 2024/01/12
    JaColBERT
  • 多言語E5をファインチューニングして検索性能を向上させる - Ahogrammer

    多言語のテキスト埋め込み用のモデルであるMultilingual-E5[1]をファインチューニングして、検索性能が向上するか否かを日語のデータセット検証してみました。結果としては、ファインチューニングすることで、OpenAItext-embedding-ada-002を上回る性能を確認できました。なお、E5については以下の記事で解説しているので、必要に応じて参照してください。 hironsan.hatenablog.com 記事の構成は次のとおりです。 実験設定 実験結果 参考資料 実験設定 今回の実験では、多言語E5をファインチューニングして得られたモデルをベクトル検索に使うことで、検索性能がどのように変化するかを検証します。多言語E5にはbaseとlargeの2つのモデルがあるので、これらをファインチューニングする前後の検索性能を測定することにします。また、比較用のモデルとしてO

    多言語E5をファインチューニングして検索性能を向上させる - Ahogrammer
  • 検索性能を改善するハイブリッド検索で使えるランク融合アルゴリズム - Ahogrammer

    Risk-Reward Trade-offs in Rank Fusionを読んでいて、検索システムの結果を統合するために使える教師なしのランク融合アルゴリズムについて書きたくなったのでまとめました。最近では、RAGの性能を改善するためにハイブリッド検索が使われることがありますが、その内部で各検索システムの結果を統合するために使うことができます。実際に計算する方法と合わせて紹介します。 記事の構成は以下のとおりです。最初に、検索の文脈からランク融合アルゴリズムについて例を交えて紹介した後、実際に計算する方法を紹介します。 アルゴリズム CombSUM CombMNZ Borda RRF 実際に計算したいときは? 参考資料 アルゴリズム 記事で紹介するアルゴリズムはスコアベースと順位ベースの2つに分けられます。スコアベースのアルゴリズムは、検索システムが出力するスコアを利用するのが特徴的で

    検索性能を改善するハイブリッド検索で使えるランク融合アルゴリズム - Ahogrammer
  • LangChainを使ってHyDEによるクエリ変換の効果を検証する - Ahogrammer

    ChatGPTやGPT-4をはじめとする大規模言語モデルの能力が向上し、多くの注目を集めています。とくにRAG(Retrieval Augmented Generation)と呼ばれる手法を使って、手元のデータを生成時に活用する手法がよく使われていますが、その性能を改善する方法は様々あります。その中でも、この記事ではRAG内部の検索性能を改善するためのクエリ変換に着目し、HyDEと呼ばれる手法の効果を日語の検索用データセットを使って検証した結果を示します。 記事の構成は以下のとおりです。 HyDEとは 実験設定 実験結果 実装の詳細 参考資料 HyDEとは HyDE(Hypothetical Document Embeddings:仮の文書の埋め込み)は、入力されたクエリに対して仮の文書を生成し、その文書を埋め込み、検索に使用する手法です[1]。典型的な文書検索では、ユーザーが入力したク

    LangChainを使ってHyDEによるクエリ変換の効果を検証する - Ahogrammer
    secondlife
    secondlife 2023/11/22
    BM25では下がる、ベクトル検索では向上
  • 文書検索におけるリランキングの効果を検証する - Ahogrammer

    語でのキーワード検索とベクトル検索に対して、検索結果のリランキングを適用して性能を評価してみました。 リランキングとは? 文書検索では検索クエリにマッチングした文書を順位付けして返しますが、その結果を何らかのモデルを使って並び替えることをリランキングと呼びます。このようなモデルを使って並び替えることで、検索結果の上位により適した文書が表示され、結果としてビジネス上のKPIの向上に繋がることが期待されます。典型的な構成は以下のとおりです。 典型的な構成 リランキング自体は必ずしも機械学習を使ったり、テキストだけを入力として使う必要はありませんが、今回は検索クエリと検索結果の文書をリランキング用の機械学習モデルに与えて並び替えます。このような方法に限らず、検索ランキングを改善する方法については以下のを参照するとよいでしょう。 www.oreilly.co.jp 実験設定 記事では、日

    文書検索におけるリランキングの効果を検証する - Ahogrammer
  • Cohereの多言語用の埋め込みモデルを日本語で評価してみる - Ahogrammer

    Cohereが提供を開始した多言語用のテキスト埋め込み用のモデルであるembed-multilingual-v3.0の性能を日語の文類似度と検索のデータセットで評価してみました。 Cohere Embed v3とは CohereのEmbed v3はテキストを埋め込むためのモデルです[1]。これまでもv2モデルがありましたが、それと比べた主な改良点は、単純に性能が向上していることに加えて、コンテンツの全体的な品質を評価する機能が挙げられます。この機能はノイズの多いデータセットを扱う場合に役立ち、品質の高い文書を上位にランク付けすることができとしています。さらに、圧縮を考慮した特別な学習方法を実装しており、ベクトルデータベースの実行コストを大幅に削減できるとしています。この機能の詳細については、近日中に公開とのことです。 画像はhttps://txt.cohere.com/introduci

    Cohereの多言語用の埋め込みモデルを日本語で評価してみる - Ahogrammer
  • ranxを使って検索システムのオフライン評価をする - Ahogrammer

    ranxはPythonで実装されたランキング評価用のライブラリです。検索システムの評価に使える以下のような指標が用意されていたり、それらの結果をRRFのようなアルゴリズムで組み合わせたり、論文用にテーブルをエクスポートする機能を備えています。記事では、ranxの簡単な使い方を紹介します。 Hits Hit Rate Precision Recall F1 r-Precision Bpref Rank-biased Precision (RBP) Mean Reciprocal Rank (MRR) Mean Average Precision (MAP) Discounted Cumulative Gain (DCG) Normalized Discounted Cumulative Gain (NDCG) インストール pipを使っている場合は以下のコマンドを実行してインストールします

    ranxを使って検索システムのオフライン評価をする - Ahogrammer
  • OpenAIの埋め込みよりも高性能?多言語E5を日本語で評価してみる - Ahogrammer

    多言語のテキスト埋め込み用のモデルであるMultilingual-E5-largeの性能を日語のデータセットで評価してみました。 E5とは E5とはEmbEddings from bidirEctional Encoder rEpresentationsの略で、テキストの埋め込み用のモデルです[1]。Web上から収集した大規模なテキストペアのデータセット(CCPairs)で対照学習したあと、NLIやMS Marcoなどの高品質なデータセットで学習しています。情報検索のベンチマークであるBEIR[2]や埋め込みのベンチマークであるMTEB[3]で評価されており、MTEBではOpenAItext-embedding-ada-002を上回る性能が報告されています。 MTEBの結果。平均的な性能で`text-embedding-ada-002`を上回っている。 CCPairsはWeb上から収集

    OpenAIの埋め込みよりも高性能?多言語E5を日本語で評価してみる - Ahogrammer
    secondlife
    secondlife 2023/07/05
    最大トークン長さが512だけど、似ている文ベクトルを作る用途ではこのパフォーマンスなら十分そうな!
  • 1