这是我们著名的“5 行代码”入门示例,其中包含本地LLM和嵌入模型。我们将使用 nomic-embed-text
和 Llama3
作为我们的嵌入模型,两者都通过 Ollama
提供。
1. 下载数据
这个例子使用了保罗·格雷厄姆(Paul Graham)的文章“我做了什么”的文本。这个例子和许多其他例子可以在我们的 repo examples
文件夹中找到。
获取它的最简单方法是通过此链接下载它并将其保存在 data
目录下,文件名为:paul_graham_essay.txt
2. 设置
Ollama 是一个帮助您在本地进行LLMs设置的工具(目前在 OSX 和 Linux 上受支持。可以通过 WSL 2 在 Windows 上安装 Ollama 。
按照自述文件了解如何安装它。
要下载 Llama3 模型,只需执行 .
1 |
ollama pull llama3 |
要下载 nom 嵌入,只需执行
1 |
ollama pull nomic-embed-text |
注意:您将需要一台至少具有 32GB RAM 的计算机。
要导入 llama_index.llms.ollama
,您应该运行
1 |
pip install llama-index-llms-ollama |
要导入 llama_index.embeddings.ollama
,您应该运行
1 |
pip install llama-index-embeddings-ollama |
https://llamahub.ai 上列出了更多集成。
3. 加载数据并构建索引
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings from llama_index.embeddings.ollama import OllamaEmbedding from llama_index.llms.ollama import Ollama documents = SimpleDirectoryReader("data").load_data() # nomic embedding model Settings.embed_model = OllamaEmbedding(model_name="nomic-embed-text") # ollama Settings.llm = Ollama(model="llama3", request_timeout=360.0) index = VectorStoreIndex.from_documents( documents, ) |
这将在 data
文件夹中的文档上构建索引(在本例中,该文件夹仅包含论文文本,但可能包含许多文档)。
目录结构应如下所示:
1 2 3 |
├── starter.py └── data └── paul_graham_essay.txt |
我们使用 nomic-embed-text
from 我们的 Ollama
嵌入包装器。我们还使用包装 Ollama
LLM器加载 Llama3 模型。
4. 查询数据
将以下行添加到 starter.py
1 2 3 |
query_engine = index.as_query_engine() response = query_engine.query("What did the author do growing up?") print(response) |
这将创建一个引擎,用于对索引进行问答,并提出一个简单的问题。您应返回类似于以下内容的响应: The author wrote short stories and tried to program on an IBM 1401.