Chroma 教程

本地 Ollama

🎉摘要:本文介绍如何通过Ollama在本地运行bge-m3嵌入模型,无需OpenAI API Key即可实现ChromaDB向量检索。内容包括Ollama安装、bge-m3模型下载、Python依赖安装及完整示例代码,适合内网部署场景。

如果你没有 OpenAI 的 API_KEY,也不想使用代理商。可以尝试本地通过 Ollama 运行嵌入模型。

Ollama 是开源免费、跨平台的本地大模型运行管理工具,你可以理解成大模型界的 Docker,一个命令就能在电脑本地跑开源大模型,不需要云端、不需要 API Key,不花一分钱(但是,需要根据自己机器配置,运行合适的大模型,模型太大本地是跑不起来的)。

如果要安装 Ollama 请查看 https://www.hxstrive.com/article/1550.htm。

下面是安装 Ollama 后,下载了三个模型后,查看本地模型界面:

准备环境

下面将使用 bge-m3 模型来做验证,访问 https://ollama.com/library/bge-m3 地址,如下图:

运行“ollama pull bge-m3”命令下载模型,模型大小为 1.2GB,如下图:

安装依赖

执行 pip install ollama 命令安装 Ollama 安装依赖,如果已经安装,跳过该步骤。

示例代码

一切准备就绪,下面开始写代码验证:

import os
import chromadb
import tempfile
from chromadb.utils.embedding_functions import OllamaEmbeddingFunction

# 持久化示例写到临时目录,工作目录保持干净
os.chdir(tempfile.mkdtemp(prefix="chroma_demo_"))

# 创建 OpenAI 远程嵌入函数
ef = OllamaEmbeddingFunction(
        url="http://localhost:11434",
        model_name="bge-m3",          # 先在 ollama 里 pull 下来
        timeout=60,
    )

client = chromadb.PersistentClient(path="./chroma_data")
col = client.get_or_create_collection(
    name="kb_zh",
    embedding_function=ef,
    configuration={"hnsw": {"space": "cosine"}},
)
col.add(ids=[
    "a", "b"
], documents=[
    "如何申请退款", "快递丢了怎么办"
])
print(col.query(query_texts=["买的东西不想要了,钱能退回来吗"], n_results=1))

运行代码,输出如下:

{'ids': [['a']], 'embeddings': None, 'documents': [['如何申请退款']], 'uris': None, 'included': ['metadatas', 'documents', 'distances'], 'data': None, 'metadatas': [[None]], 'distances': [[0.17788875102996826]]}

Ollama 的方案很适合内网部署,不用装 torch,模型统一管理,还能挂 GPU。

  

说说我的看法
全部评论()
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号