使用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的无限可能!