langchain-chroma调用时出现kernel crashed

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

一、运行langchain-chroma出现的问题

本人最近在使用Jupyter调用chroma进行文档向量库存储,使用的环境和系统版本为:

  • python: v3.14
  • langchain-chroma:v1.0.0
  • 操作系统: win10
  • 向量模型:DashScopeEmbeddings的text-embedding-v1

代码如下:

from langchain_chroma import Chroma
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_community.document_loaders import CSVLoader

loader = CSVLoader(
    file_path="data/test.csv", // 文件内容省略
    encoding="utf-8",
)

docs = loader.load() // 读取文档内容

db = Chroma.from_documents( // 使用Chroma转换为向量进行存储
    documents=docs,
    embedding=DashScopeEmbeddings(
        model="text-embedding-v1",
    ),
    ids=[f"id{i}" for i in range(len(docs))], // 为每个文档创建id
    persist_directory="./data/chroma_db" // 数据库存储路径
)
// 从数据库搜索数据
result = db.similarity_search(query="Alice", k=3)
print(result)

以上代码运行后出现:

TheKernel crashed while executing code
The Kernel crashed表示 python 编译器执行后出现了中断,开始认为是Jupyter不支持Chroma调用,于是编写了一个chroma-test.py文件单独运行,运行后出现弹窗提示程序中断。说明Jupyter没问题,问题可能出现在
Chroma对应的执行依赖上。

二、问题排查

  1. 通过排查,调用Chroma后对应的存储文件目录都能正常创建,但是无对应的数据文件,如下:
    在这里插入图片描述
    在目录51f01c3c-dddb-4e94-aa02-f71e1c230aae下未能正常生成数据操作相关运行文件,这说明chroma未能正确进行初始化。
  2. 其次查看了对应初始化参数,只有DashScopeEmbeddings为外部调用的依赖,是否是DashScopeEmbeddings对应的模型未能正确调用导致程序中断,于是本人直接把embedding设置为None,这样Chroma会运行内置的向量模型,但再次运行时,出现提示如下:

在这里插入图片描述
原因是chroma依赖的onnxruntime 需要 Visual C++ Redistributable for Visual Studio 2015-2022。

  • 于是进行了下载安装,依赖官方地址:

https://aka.ms/vs/17/release/vc_redist.x64.exe

  • 安装后再次重启电脑,运行程序后正常无中断,搜索结果如下:
    在这里插入图片描述
    有了搜索结果,说明文档已经正确存储到了向量数据库,再次查看数据文件目录:
    在这里插入图片描述
    现在比之前多了4个执行文件,chroma能成功初始化并执行。

三、结语

在运行jupyter时如果出现Kernel-crashed的情况,还可以通过官方对应的文档进行参照,官方地址:

https://github.com/microsoft/vscode-jupyter/wiki/Kernel-crashes

很多时候对应的依赖如果有问题执行过程程序会提示,如果是导致编译器直接crashed则需要排查是否系统的依赖缺失或者编译器版本是否能在当前环境下正常使用,再根据不同环境进行排查。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值