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

Chroma.afrom_texts与Chroma.from_texts的区别及向量可视化方法

LangChain中ChromaDB的from_texts与afrom_texts区别及向量可视化方法

一、两个方法的区别与用途

  • Chroma.from_texts()是同步阻塞方法,直接返回Chroma向量存储实例(也就是你看到的<langchain.vectorstores.chroma.Chroma at ...>),是日常开发里最常用的常规写法,适合简单的同步代码场景。
  • Chroma.afrom_texts()是异步非阻塞方法,返回的是协程对象。它专门用于异步编程环境(比如基于asyncio的代码、FastAPI这类异步Web框架),需要配合await关键字才能获取真正的Chroma实例,示例代码:
    import asyncio
    async def main():
        db = await Chroma.afrom_texts(docs, embedding_function)
    asyncio.run(main())
    
    这种写法的优势是在异步场景下不会阻塞事件循环,能提升代码的并发处理效率。

二、协程对象的含义

你看到的<coroutine object VectorStore.afrom_texts at ...>是Python异步编程中的协程对象,它本身不是最终执行结果,只是一个待触发的异步任务单元。如果直接把它赋值给变量而不执行,这个变量只是保存了一个未启动的异步任务,无法直接用来做向量查询、检索等操作。必须通过await关键字,或者asyncio.run()、asyncio.create_task()这类方式触发执行,才能得到可用的Chroma向量存储实例。

三、向量数值的可视化探索方法

要可视化高维向量,核心是先把向量降维到2D或3D,再用绘图工具展示,常用方案如下:

1. UMAP降维+Matplotlib绘图

UMAP适合保留向量间的局部结构,可视化效果更贴近原始数据的聚类关系:

import umap
import matplotlib.pyplot as plt
from langchain.vectorstores import Chroma

# 获取已存储的所有向量
db = Chroma.from_texts(docs, embedding_function)
embeddings = db.get()['embeddings']

# 降维到2D
reducer = umap.UMAP(n_components=2)
reduced_embeddings = reducer.fit_transform(embeddings)

# 绘制散点图
plt.scatter(reduced_embeddings[:, 0], reduced_embeddings[:, 1])
plt.title("向量嵌入2D可视化")
plt.show()

2. PCA降维+Plotly交互式绘图

PCA是基础降维方法,Plotly可以生成交互式3D图,方便你拖拽、缩放探索:

from sklearn.decomposition import PCA
import plotly.express as px

# 降维到3D
pca = PCA(n_components=3)
reduced_embeddings = pca.fit_transform(embeddings)

# 生成交互式3D散点图
fig = px.scatter_3d(x=reduced_embeddings[:,0], y=reduced_embeddings[:,1], z=reduced_embeddings[:,2])
fig.show()

3. 单条向量数值分布查看

如果只想探索单个向量的数值分布,可以直接绘制直方图:

import numpy as np
import matplotlib.pyplot as plt

# 取第一条向量
single_embedding = embeddings[0]
plt.hist(single_embedding, bins=20)
plt.title("单条向量数值分布")
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 22:03:32