首页 >科技周边 >人工智能 >如何改善抹布性能: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