ホームページ >テクノロジー周辺機器 >AI >ラグパフォーマンスを改善する方法:5つの重要なテクニックを使用して

ラグパフォーマンスを改善する方法:5つの重要なテクニックを使用して

Joseph Gordon-Levitt
Joseph Gordon-Levittオリジナル
2025-03-07 09:22:09936ブラウズ

検索拡張生成(RAG)は、外部データを組み込むことにより、大規模な言語モデル(LLM)の精度と信頼性を大幅に向上させます。これにより、回答がコンテキスト化され、再訓練なしで更新が可能になります。 ただし、RAGは普遍的に効果的ではありません。この記事では、堅牢なラグパイプラインの構築を詳述し、制限を調査し、ソリューションを提供しています。

Openai Fundamentals(簡単に言及し、拡張する必要はありません) Openai APIの使用について詳しく知ります。 今すぐ開始

ragの仕組み:

(llamaindexドキュメントからの画像)

How to Improve RAG Performance: 5 Key Techniques with Examples

ラグパイプラインは、インデックス、検索、および生成の3つの段階で構成されています。

インデックス作成:

データ(さまざまな形式)がクリーニングされ、プレーンテキストに変換され、管理可能なピースに充電され、埋め込みモデルを使用して数値ベクター(埋め込み)に変換されます。 これらの埋め込みとチャンクは、効率的な検索のためにインデックスが付けられています

  • 検索:ユーザークエリは、同じ埋め込みモデルを使用してベクトル化されます。 このシステムは、クエリベクトルとインデックス付きチャンクベクトル間の類似性スコアを計算し、最も類似したチャンクの上部Kを取得します。

  • 生成:

    クエリと取得したチャンクは、プロンプトにフォーマットされ、回答生成のためにLLMに供給されます。

  • ぼろきれの制限:
  • 各段階に課題が存在します:

  • インデックス作成:
ノイズの多いデータは、役に立たないLLM応答につながります。

検索:

システムは常に関連するチャンクを取得するとは限りません

世代:
    良い検索があっても、LLMは誤った回答を幻覚させる可能性があります。
  • ラグパフォーマンスの改善:
  • 3つの重要な戦略は、これらの制限に対処します:チャンク、再ランク、クエリ変換。 以下は、Wikipediaエントリに関する質問に答えるためにLlamaindexとOpenai APIを使用してこれらを示しています(Emma Stone、Ryan Gosling、La La Land)。
  • ベースラインラグシステム:
  • 必要なパッケージをインストール:
OpenAI APIキーを設定します:

ウィキペディアのデータをロードしてインデックスを構築します:

コンテキストベースの回答を確保するためのプロンプトテンプレートを作成します:

(簡潔にするために、初期クエリとサブパーレスポンスは省略されています。焦点は改善戦略にあります。)

チャンキングで改善:
!pip install llama-index openai wikipedia

検索を最適化するには、
import os
os.environ["OPENAI_API_KEY"] = "YOUR_OPENAI_API_KEY"
および

を調整します

from llama_index.core import (VectorStoreIndex, ServiceContext, download_loader)
WikipediaReader = download_loader("WikipediaReader")
loader = WikipediaReader()
pages = ['Emma_Stone', 'La_La_Land', 'Ryan_Gosling']
documents = loader.load_data(pages=pages, auto_suggest=False, redirect=False)

from llama_index.llms import OpenAI
from llama_index.embeddings import OpenAIEmbedding, OpenAIEmbeddingModelType
gpt3 = OpenAI(temperature=0, model="gpt-3.5-turbo-instruct", api_key=os.environ["OPENAI_API_KEY"])
embed_model = OpenAIEmbedding(model=OpenAIEmbeddingModelType.TEXT_EMBED_ADA_002, api_key=os.environ["OPENAI_API_KEY"])
service_context_gpt3 = ServiceContext.from_defaults(llm=gpt3, chunk_size=256, chunk_overlap=0, embed_model=embed_model)
index = VectorStoreIndex.from_documents(documents, service_context=service_context_gpt3)
retriever = index.as_retriever(similarity_top_k=3)
再ランキングで改善:

(flagembeddingrerankerとrankgptrerankのコードの例は簡潔に省略されていますが、説明は残っています)

  • flagembeddingReranker:hugge慢な顔の再ランクモデル(例えば、BAAI/bge-reranker-base)を使用して、チャンク関連性を改善します。 ハグするフェイスアクセストークンが必要です。

  • rankgptrerank:llm(例えば、gpt-3.5-turbo-0125)を使用して、セマンティック理解に基づいて検索されたチャンクを再ランクします。

  • クエリ変換により改善:

(HydeおよびMulti-Stepクエリ変換のコード例は簡潔にするために省略されていますが、説明は残っています)

hyde(仮説文書の埋め込み):

仮説的な答えを生成し、クエリと仮想の回答の両方に埋め込みを作成し、これらの埋め込みに最も近いドキュメントを取得します。
  • マルチステップクエリ変換:複雑なクエリをよりシンプルなサブQuerieに分解して、より効果的な処理を行います。

  • 結論: この記事では、ぼろきれのパフォーマンスを向上させるためのいくつかの手法を紹介しました。最適なアプローチは、特定のアプリケーションと望ましい結果に依存します。 RAGのさらなる調査は、[こちらのコードビデオへのリンク]で見つけることができます。

以上がラグパフォーマンスを改善する方法:5つの重要なテクニックを使用しての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。