首頁 >科技週邊 >人工智慧 >如何改善抹布性能:5個與示例的關鍵技術

如何改善抹布性能:5個與示例的關鍵技術

Joseph Gordon-Levitt
Joseph Gordon-Levitt原創
2025-03-07 09:22:09940瀏覽

通過合併外部數據,檢索增強發電(RAG)可顯著增強大語言模型(LLM)的準確性和可靠性。這是將答案的上下文化,並允許更新而無需再培訓。 但是,抹布並不是普遍有效的。本文詳細介紹了構建強大的抹布管道,探索限制並提供解決方案。

OpenAi基本原理(簡短提及,不需要擴展)

> >了解有關使用OpenAI API的更多信息。

>現在開始

>抹布的工作方式:

How to Improve RAG Performance: 5 Key Techniques with Examples (llamaindex文檔的圖像)

> 抹布管道包括三個階段:索引,檢索和一代。

    索引:
  • data(各種格式)被清潔,轉換為純文本,分解為可管理的部分,然後使用嵌入模型轉換為數值向量(嵌入)。 這些嵌入和塊被索引以進行有效的搜索。

    > 使用相同的嵌入模型對用戶查詢進行矢量進行

  • 檢索:
  • 。 該系統計算查詢向量和索引塊向量之間的相似性得分,從而檢索了最類似的K。

    生成:
  • >查詢和檢索到的塊格式化為提示,並餵給LLM以進行答案。
  • 抹布的限制:

  • >在每個階段都存在挑戰:

索引:

嘈雜的數據導致無用的LLM響應。

檢索:
    系統可能並不總是檢索相關的塊。
  • 生成:
  • 即使取回良好,LLM也可能幻覺不正確的答案。
  • >
  • 改善抹布性能:
  • >三個關鍵策略解決了以下局限性:塊,重新排列和查詢轉換。 以下顯示了使用LlamainDex和OpenAI API來回答有關Wikipedia條目的問題(Emma Stone,Ryan Gosling,La La Land)。
基線抹布系統:

安裝必要的軟件包:

設置您的OpenAI API密鑰:

>加載wikipedia數據並構建索引:

創建一個提示模板,以確保基於上下文的答案:

!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)
調整

>和

in
from llama_index.core.prompts import PromptTemplate
template = (
    "We have provided context information below. \n"
    "---------------------\n"
    "{context_str}"
    "\n---------------------\n"
    "Given this information, please answer the question: {query_str}\n"
    "Don't give an answer unless it is supported by the context above.\n"
)
qa_template = PromptTemplate(template)
優化檢索。

>

通過重新排名進行改進:

(flagembeddingreranker和rankgptrerank的代碼示例省略了,但描述仍然存在)

  • > flagembeddingreranker:

    >使用擁抱的臉部重新排行模型(例如,)來提高相關性。 需要一個擁抱的臉部訪問令牌。 BAAI/bge-reranker-base

  • rankgptrerank:

    使用llm(例如,)基於語義理解重新排列塊。 gpt-3.5-turbo-0125 通過查詢轉換:

  • 改進:

> (HYDE和多步查詢轉換的代碼示例是為了簡短的,但仍保留了描述)

hyde(假設文件嵌入):產生一個假設的答案,為查詢和假設的答案創建嵌入,並檢索最接近這些嵌入的文檔。

  • >

    多步查詢轉換:將復雜的查詢分解為更簡單的子查詢,以進行更有效的處理。 >

  • 結論: >本文展示了幾種提高破布性能的技術。最佳方法取決於特定的應用程序和所需的結果。 可以在[在此處鏈接到代碼視頻的鏈接]。

以上是如何改善抹布性能:5個與示例的關鍵技術的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn