You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何有效可视化存储在ChromaDB中的向量嵌入?

可视化ChromaDB中OpenAI嵌入向量的实操方案

实现逻辑

OpenAI的嵌入是1536维高维数据,必须通过降维算法压缩到2D/3D空间才能可视化。结合ChromaDB的API提取向量,再用UMAP/PCA降维,最后用可视化工具关联文本元数据,就能直观看到向量的聚类分布。


1. 从ChromaDB导出向量与文本

先加载已持久化的Chroma集合,提取所有存储的向量、文档和元数据:

import chromadb
from langchain_openai import OpenAIEmbeddings
import numpy as np

# 初始化嵌入模型与Chroma客户端
embeddings = OpenAIEmbeddings()
client = chromadb.PersistentClient(path="./chroma_db")
# 默认集合名为langchain,若自定义过需修改
collection = client.get_collection("langchain")

# 提取完整数据(包含向量、文档、元数据)
data = collection.get(include=["embeddings", "documents", "metadatas"])
vectors = np.array(data["embeddings"])
docs = data["documents"]
metadatas = data["metadatas"]

2. 高维向量降维

推荐用UMAP(聚类效果稳定、速度优于t-SNE),也可以用PCA做快速初步分析:

# 安装依赖
!pip install umap-learn matplotlib plotly pandas

import umap
reducer = umap.UMAP(n_components=2, random_state=42)
# 降维到2D平面
reduced_vectors = reducer.fit_transform(vectors)

3. 可视化实现

基础静态可视化(Matplotlib)

适合小数据集,直接标注文本片段:

import matplotlib.pyplot as plt

plt.figure(figsize=(14, 10))
plt.scatter(reduced_vectors[:, 0], reduced_vectors[:, 1], alpha=0.7, s=50)

# 为每个点添加文本标注(数据量<100时适用)
for idx, doc in enumerate(docs):
    plt.text(reduced_vectors[idx, 0], reduced_vectors[idx, 1], 
             doc[:60] + "...", fontsize=7, alpha=0.8)

plt.title("ChromaDB向量嵌入UMAP降维分布")
plt.xlabel("UMAP维度1")
plt.ylabel("UMAP维度2")
plt.tight_layout()
plt.show()

交互式可视化(Plotly)

适合大数据集,鼠标悬停可查看完整文本片段与元数据:

import pandas as pd
import plotly.express as px

# 构造可视化用DataFrame
df = pd.DataFrame({
    "x": reduced_vectors[:, 0],
    "y": reduced_vectors[:, 1],
    "文档预览": [doc[:120] + "..." for doc in docs],
    "来源文件": [meta.get("source", "未知") for meta in metadatas]
})

# 生成交互式散点图
fig = px.scatter(df, x="x", y="y", 
                 hover_data=["文档预览", "来源文件"],
                 title="ChromaDB 向量嵌入交互式可视化")
fig.update_traces(marker=dict(size=8, opacity=0.7))
fig.show()

进阶玩法

  • 查询向量对比:生成查询文本的嵌入,加入降维数组,用不同颜色标记,直观看到查询与相关文档的聚类关系。
  • 聚类上色:用K-Means对降维后的向量分组,给不同簇分配颜色,快速识别主题聚类。

内容的提问来源于stack exchange,提问作者Anay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 01:28:25