阿里云服务器摆设向量数据库Chroma并通过Client毗连

[复制链接]
发表于 2026-2-6 00:07:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Chroma简介

官网:https://docs.trychroma.com/
Chroma是一个开源的向量数据库。可以为大语言模子提供额外的知识存储。
Chroma的上风



  • 开源
  • 简单轻巧

    • 内存模式下无需额外摆设

  • 相对较快
Server模式的摆设

内存模式固然简单轻巧,但也只限于开辟验证(重启应用数据会丢失)。实际使用照旧须要在服务器摆设起来。
前置条件

开通云服务器并安装docker
ali云官方安装教程
获取Docker镜像并摆设

你可以直接从DockerHub拉取Chroma官方镜像
  1. docker pull chromadb/chroma
复制代码
之后实行下令,运行docker
  1. docker run -d --name chromadb-container -p 8899:8000 chromadb/chroma
复制代码
注:上面8899是指宿主机(host)的端标语,背面的8000 (即 -p 参数后的8000) 代表的是容器(container)内部的端标语。
如许chroma就在服务器上运行了
客户端访问

创建chroma 客户端
  1. import os
  2. import chromadb
  3. from langchain_openai import OpenAIEmbeddings
  4. # 创建client
  5.     client = chromadb.HttpClient(
  6.                                                              host=os.environ.get("CHROMA_SERVER_IP"),  # 你的服务器ip
  7.                                  port=8899,  # 你的服务器端口
  8.                                  )
复制代码
创建collection
  1. # 创建collection
  2.     collection = client.get_or_create_collection(
  3.         name="hello", # collection名称
  4.     )
复制代码
向collection添加文档
  1. # embedding函数,这里用了langchain的openai embedding函数
  2.     embeddings = OpenAIEmbeddings().embed_documents
  3.     # 向collection中添加文档
  4.     collection.add(
  5.         embeddings=embeddings(texts=["hello world", "goodbye world"]),  # 每个文档的向量
  6.         documents=["hello world", "goodbye world"],  # 文档的原文
  7.         ids=[f"id{i}" for i in range(len(["hello world", "goodbye world"]))]  # 每个文档的 id
  8.     )
复制代码
查询
  1. # 查询向量数据库
  2.     result = collection.query(
  3.         query_embeddings=embeddings(texts=["hello"]),
  4.         n_results=1
  5.     )
  6.     print(result)
复制代码
结果:
  1. {'ids': [['id0']], 'distances': [[0.21401809153891344]], 'embeddings': None, 'metadatas': [[None]], 'documents': [['hello world']], 'uris': None, 'data': None}
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表