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

使用LangChain将DocumentDB作为向量存储时遇'Database不可调用'错误求助

问题分析与解决方案

错误原因定位

出现ValueError: Error raised by inference endpoint: 'Database' object is not callable错误,核心原因大概率是以下两种情况之一:

  1. Collection对象传递错误:你传入的MONGODB_COLLECTION实际是Database对象而非合法的Collection对象。LangChain的MongoDBAtlasVectorSearch类会对传入的collection执行调用类操作,而Database对象不支持该行为,从而触发报错。
  2. MongoDBAtlasVectorSearch类的兼容性限制:该类是针对MongoDB Atlas开发优化的,尽管DocumentDB兼容MongoDB API,但部分内部逻辑(比如数据库对象的调用方式)可能存在差异,导致兼容失效。

针对性解决步骤

1. 校验Collection对象的正确性

确保你是按照正确流程获取Collection对象:

# 正确的DocumentDB连接与Collection获取流程
from pymongo import MongoClient

client = MongoClient("你的DocumentDB连接字符串")
db = client["目标数据库名称"]
MONGODB_COLLECTION = db["目标集合名称"]  # 这里必须是集合对象,而非数据库对象

检查代码中是否误将db(Database对象)赋值给了MONGODB_COLLECTION,这是最常见的触发该错误的原因。

2. 绕过类方法,手动实现文档插入与向量存储初始化

由于from_documents类方法可能存在兼容问题,可以手动完成文档嵌入、插入与向量存储初始化:

# 1. 手动为文档生成嵌入向量
docs_with_embeddings = []
for doc in docs:
    # 生成嵌入向量
    embedding = bedrock_embeddings.embed_query(doc.page_content)
    # 构造符合要求的文档结构
    doc_item = {
        "content": doc.page_content,
        "metadata": doc.metadata,
        "embedding": embedding
    }
    docs_with_embeddings.append(doc_item)

# 2. 将文档批量插入DocumentDB集合
MONGODB_COLLECTION.insert_many(docs_with_embeddings)

# 3. 手动初始化MongoDBAtlasVectorSearch
vector_search = MongoDBAtlasVectorSearch(
    collection=MONGODB_COLLECTION,
    embedding=bedrock_embeddings,
    index_name="你的向量索引名称"  # 需要提前在DocumentDB创建对应向量索引
)

3. 确认DocumentDB向量索引已正确创建

向量存储依赖提前创建的向量索引,按照DocumentDB的语法创建符合要求的索引(替换为你的嵌入维度):

// 在DocumentDB的Mongo Shell中执行
db.目标集合名称.createIndex(
    {"embedding": "vector"},
    {"vectorOptions": {"type": "float", "dimensions": 1536}}  // 维度需与Bedrock嵌入模型一致
)

4. 升级LangChain版本

检查并升级到最新版LangChain,新版本可能修复了对DocumentDB的兼容问题:

pip install --upgrade langchain langchain-mongodb

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:30:18