07 使用LLMs:LlamaIndex中的LLM选择与应用

使用LLMs:LlamaIndex中的LLM选择与应用

在构建基于LLM的应用时,第一步是选择使用哪个LLM;如果你愿意,也可以使用多个LLM。

LLMs在你的工作流程的多个不同阶段被使用:

  • 索引阶段:你可能会使用LLM来确定数据的相关性(是否索引它),或者你可能会使用LLM来总结原始数据并索引这些总结。
  • 查询阶段:LLMs可以以两种方式使用:
    • 检索阶段(从你的索引中获取数据):LLMs可以给出一个选项数组(如多个不同的索引),并决定在哪里最好地找到你正在寻找的信息。一个代理LLM也可以在这个阶段使用工具来查询不同的数据源。
    • 响应合成阶段(将检索到的数据转换为答案):LLM可以将多个子查询的答案组合成一个连贯的答案,或者它可以转换数据,例如从非结构化文本到JSON或其他编程输出格式。

LlamaIndex提供了一个单一接口,连接到大量不同的LLMs,允许你将选择的任何LLM传递到流程的任何阶段。它可以简单到这样:

from llama_index.llms.openai import OpenAI

response = OpenAI().complete("Paul Graham is ")
print(response)

通常,你会实例化一个LLM并将其传递给Settings,然后将Settings传递到流程的其他阶段,如下例所示:

from llama_index.llms.openai import OpenAI
from llama_index.core import Settings
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

Settings.llm = OpenAI(temperature=0.2, model="gpt-4")

documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(
    documents,
)

在这种情况下,你实例化了OpenAI并自定义为使用gpt-4模型而不是默认的gpt-3.5-turbo,并且还修改了温度。现在,VectorStoreIndex将在查询时使用gpt-4来回答问题。

提示

Settings是一个配置数据的捆绑包,你将其传递到LlamaIndex的不同部分。你可以了解更多关于Settings以及如何自定义它。

可用的LLMs

我们支持与OpenAI、Hugging Face、PaLM等的集成。查看我们的LLM模块指南,获取完整列表,包括如何运行本地模型。

提示

关于隐私和LLMs的一般说明可以在隐私页面上找到。

使用本地LLM

LlamaIndex不仅支持托管的LLM API;你还可以在本地运行本地模型,如Llama2。

例如,如果你已经安装并运行了Ollama:

from llama_index.llms.ollama import Ollama
from llama_index.core import Settings

Settings.llm = Ollama(model="llama2", request_timeout=60.0)

查看自定义LLM的“操作方法”了解更多细节。

提示

默认情况下,LlamaIndex附带了一套内置的、经过实战测试的提示,这些提示处理了让特定LLM正确处理和格式化数据的棘手工作。这是使用LlamaIndex的最大好处之一。如果你愿意,你可以自定义这些提示。

通过LlamaIndex,我们不仅提供了一个强大的工具集,还构建了一个充满活力的社区,致力于推动LLMs在各种应用中的潜力。无论你是初学者还是经验丰富的开发者,LlamaIndex都为你提供了探索和实现上下文增强LLM应用的途径。加入我们,一起解锁LLMs的无限可能!

### LlamaIndex 的基本概念使用方法 LlamaIndex 是一种用于文本数据处理和查询的强大工具,它支持对一系列字符串进行索引化操作,并提供灵活的查询接口[^1]。通过结合向量存储、总结索引和工具检索器等多种技术,LlamaIndex 能够实现高效的文档检索功能[^2]。 以下是基于 StringIterableReader 和简单查询的一个基础示例: #### 基础代码示例 ```python from llama_index import GPTSimpleVectorIndex, SimpleDirectoryReader, StringIterableReader # 准备要索引化的文本数据 documents = StringIterableReader().load_data(texts=["这是一个测试文档", "这是另一个测试文档"]) # 创建索引 index = GPTSimpleVectorIndex.from_documents(documents) # 进行查询 query_result = index.query("请告诉我关于测试的信息") print(query_result.response) ``` 上述代码展示了如何利用 `StringIterableReader` 加载一组字符串作为文档集合,并将其转换为可查询的向量索引形式。随后,可以通过 `.query()` 方法执行自然语言查询并获取响应结果。 --- ### 高级功能:构建聊天引擎 除了简单的文本查询外,LlamaIndex 还能被用来构建更复杂的交互式系统,比如聊天机器人。这通常涉及以下几个步骤: 1. **安装依赖** 确保已正确安装 LlamaIndex 库及其相关组件[^3]。 ```bash pip install llama-index ``` 2. **加载数据源** 数据可以来自文件、数据库或其他外部服务。这里继续沿用之前的 `StringIterableReader` 示例。 3. **创建索引结构** 使用合适的索引类型(如矢量索引),以便后续快速匹配相关内容。 4. **配置对话引擎** 将索引集成至聊天框架中,允许用户输入自由格式的问题并之互动。 完整流程如下所示: ```python from llama_index import ServiceContext, set_global_service_context from llama_index.llms import OpenAI from llama_index.chat_engine.types import ChatMode from llama_index.indices.vector_store import VectorStoreIndex from llama_index import SimpleDirectoryReader # 设置全局服务上下文 (例如指定使用LLM 模型) llm = OpenAI(model="gpt-3.5-turbo") service_context = ServiceContext.from_defaults(llm=llm) set_global_service_context(service_context) # 导入本地目录中的文档 reader = SimpleDirectoryReader(input_dir="./data") docs = reader.load_data() # 构建向量索引 index = VectorStoreIndex.from_documents(docs) # 初始化聊天引擎 chat_engine = index.as_chat_engine(chat_mode=ChatMode.CONTEXTUAL) # 开始会话循环 while True: user_input = input("请输入您的问题: ") response = chat_engine.chat(user_input) print(f"回答: {response}") ``` 此脚本实现了从读取静态文件到动态问答的功能扩展。 --- ### 自定义知识库索引 对于更大规模的应用场景,可能需要额外考虑以下几点优化措施: - **自定义嵌入模型**:替换默认嵌入算法以适配特定领域需求[^4]; - **持久化存储机制**:保存生成好的索引供未来重复调用而无需重新计算; - **多模态融合能力**:引入图片或音频等形式的数据扩充信息维度。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值