向量数据库
专为高效存储与检索高维向量设计,支持语义搜索、推荐系统等AI场景,如文本/图像嵌入的相似性匹配。
ChromaDB
轻量级开源向量数据库,优势在于易用性(快速部署、简洁API)和小规模场景(本地开发、原型验证),常与AI模型(如OpenAI)配合实现RAG等应用。
下面是一个简单的例子
# 1. 生成嵌入(使用OpenAI)
from openai import OpenAI
import chromadb#client = OpenAI()
client = OpenAI(api_key="sk-xx",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")text1 = "一只柯基在蹦蹦跳跳"
embedding_corgi = client.embeddings.create(model="text-embedding-v3", input=text1).data[0].embedding
text2 = "一只小狗在奔跑"
embedding_dog = client.embeddings.create(model="text-embedding-v3", input=text2).data[0].embedding
text3 = "一只鸟在飞"
embedding_bird = client.embeddings.create(model="text-embedding-v3", input=text3).data[0].embedding# 2. 初始化 ChromaDB 本地客户端
chroma_client = chromadb.PersistentClient(path="./chroma_animals_data")
collection = chroma_client.get_or_create_collection("animals")
collection.add(ids=["corgi"], embeddings=[embedding_corgi], documents=[text1])
collection.add(ids=["dog"], embeddings=[embedding_dog], documents=[text2])
collection.add(ids=["bird"], embeddings=[embedding_bird], documents=[text3])# 3. 相似性检索
query = "蹦蹦跳跳的小狗"
query_embedding = client.embeddings.create(model="text-embedding-v3", input=query).data[0].embedding
results = collection.query(query_embeddings=[query_embedding], n_results=3)
print("匹配结果:", results["documents"])
第一步:生成文本向量 (Embedding)
text1 = "一只柯基在蹦蹦跳跳"
embedding_corgi = client.embeddings.create(model="text-embedding-v3", input=text1).data[0].embedding
text2 = "一只小狗在奔跑"
embedding_dog = client.embeddings.create(model="text-embedding-v3", input=text2).data[0].embedding
text3 = "一只鸟在飞"
embedding_bird = client.embeddings.create(model="text-embedding-v3", input=text3).data[0].embedding
第二步:存入向量数据库 (ChromaDB)
chroma_client = chromadb.PersistentClient(path="./chroma_animals_data")
collection = chroma_client.get_or_create_collection("animals")
collection.add(ids=["corgi", "dog", "bird"],embeddings=[embedding_corgi, embedding_dog, embedding_bird],documents=[text1, text2, text3]
)
第三步:执行语义搜索
query_embedding = client.embeddings.create(model="text-embedding-v3", input=query).data[0].embedding
results = collection.query(query_embeddings=[query_embedding], n_results=3)
print("匹配结果:", results["documents"])
第四步:输出