ChromaDB调用BGE模型的两种实践方式

ChromaDB调用BGE模型

前言

在语义搜索、知识库构建等场景中,文本向量化(Embedding)是核心技术环节。作为一款开源的向量数据库,ChromaDB允许开发者通过自定义嵌入函数灵活对接各类模型。本文将详细介绍两种基于BGE模型的实现方案:​​远程API调用​​与​​本地模型部署​​,并解析它们的应用场景与实现细节。

1.chromadb调用BGE模型api

此api接口是Ollama接口方式:

关键点解析:

​​API服务对接​​:通过HTTP POST请求调用部署在9.1.47.89:11434的Ollama服务

​​模型指定​​:使用bge-m3:latest模型的最新版本

​​超时控制​​:设置30秒超时避免长期阻塞

​​异常处理​​:非200状态码时抛出详细错误信息

python 复制代码
import requests
from chromadb.api.types import Documents, EmbeddingFunction, Embeddings

class MyEmbeddingFunction(EmbeddingFunction):
    def __call__(self, texts: Documents) -> Embeddings:
        # 调用远程Ollama服务的BGE-M3模型
        response = requests.post(
            "http://9.1.47.89:11434/v1/embeddings",
            json={
                "model": "bge-m3:latest",
                "input": texts
            },
            timeout=30  # 增加超时设置
        )
        
        if response.status_code == 200:
            return [vec['embedding'] for vec in response.json()['data']]
        else:
            raise Exception(f"Embedding API调用失败: {response.text}")

# 初始化自定义嵌入函数
ef = MyEmbeddingFunction()

注意不同版本之间的访问方式可能不一致。"http://9.1.47.89:11434/v1/embeddings",可修改为"http://9.1.47.89:11434/api/embeddings"。

vec\['embedding'\] for vec in response.json()\['data'\]\]中的"data"可修改为"embeddings"。 都可进行尝试。 ### 2.调用本地模型 ```python from chromadb.api.types import Documents, EmbeddingFunction, Embeddings from sentence_transformers import SentenceTransformer model_path = "emmodel/bge-large-zh-v1.5" model = SentenceTransformer(model_name_or_path=model_path) class MyEmbeddingFunction(EmbeddingFunction): def __call__(self, texts: Documents) -> Embeddings: embeddings = [model.encode(x).tolist() for x in texts] return embeddings ef = MyEmbeddingFunction() ``` 关键点解析: ​​本地模型加载​​:使用sentence-transformers库加载预训练模型 ​​路径指定​​:从emmodel/目录加载bge-large-zh-v1.5模型文件 ​​批量编码​​:对输入文本列表进行并行向量化 模型准备: ```python # 下载官方模型 git clone https://www.modelscope.cn/company/BAAI/bge-large-zh-v1.5.git # 或使用huggingface-hub from huggingface_hub import snapshot_download snapshot_download(repo_id="BAAI/bge-large-zh-v1.5") ```

相关推荐
韩曙亮2 个月前
【AI 大模型】RAG 检索增强生成 ⑤ ( 向量数据库 | 向量数据库 索引结构和搜索算法 | 常见 向量数据库 对比 | 安装并使用 向量数据库 chromadb 案例 )
数据库·人工智能·大模型·openai·向量数据库·ai大模型·chromadb
phynikesi5 个月前
langchain chroma 与 chromadb笔记
笔记·langchain·chromadb
洛阳泰山6 个月前
Chainlit集成LlamaIndex和Chromadb实现RAG增强生成对话AI应用
人工智能·llm·rag·llamaindex·chromadb·chainlit
CS_木成河7 个月前
【论文阅读】BGE M3-Embedding:通过自知识蒸馏实现多语言、多功能、多粒度的文本嵌入
论文阅读·人工智能·embedding·检索·文本嵌入·bge
WorkAgent1 年前
ChromaDB教程
语言模型·向量数据库·chromadb
龙井茶Sky1 年前
向量数据库Chroma初步了解学习记录
向量数据库·chromadb