Claude 使用手册
独立第三方资料站 · 非 Anthropic / Claude 官方网站查阅条件,核对证据
使用指南

Claude 与 Pinecone、Weaviate:可验证的 RAG 接入流程

区分嵌入、向量检索与答案生成,建立切片、版本、权限过滤、来源引用和检索评测。

先把三个组件分开

Claude 负责基于检索材料回答;embedding 模型把文本转向量;向量库负责存储和检索。Anthropic 官方嵌入指南说明其不提供自有 embedding 模型,并介绍外部提供商;选择时应评估语言、领域、费用、数据处理和部署要求。文档发给 embedding 服务和模型服务是两次数据流,必须都在授权范围内。

入库:分段、向量与版本绑定

按标题、段落和条款切片,让一个片段保留可理解的上下文;表格要保留列名,例外条件尽量不与主规则分离。每片记录 doc_id、chunk_id、版本、来源、有效日期和权限范围。模型或维度变更时重新建索引或迁移,不把不同向量空间混放。

例:报销规范有旧版与新版,新版只改变住宿标准。chunk ID应能区分文档版本;新索引验收后再切换,旧片段需要按保留政策清理,不能让搜索同时召回两个未标注版本。按字数硬切只是原型,生产应依据实际检索失败调整。

查询:先身份过滤,再找相似材料

Pinecone 可通过 namespace 将租户请求限定到对应空间;Weaviate 多租户集合通过 tenant 选择上下文。租户值必须由服务端认证确定,不能由模型或任意请求字段决定。命中以后仍要检查细粒度文档权限与有效日期,不能先把所有材料发送模型再过滤。

以下适配器假设已建立兼容维度的索引/多租户集合、已完成认证,并由同一 embedding 配置产生 query_vector。这里只演示查询调用形状,不创建服务、不上传文件,也不代表两个 SDK 可以无缝互换。

python · 示例
def pinecone_search(index, tenant, query_vector):
    if not tenant:
        raise ValueError("tenant_required")
    result = index.query(namespace=tenant, vector=query_vector,
                         top_k=4, include_metadata=True)
    return [{"id":m.id, "metadata":m.metadata} for m in result.matches]

def weaviate_search(client, collection_name, tenant, query_vector):
    if not tenant:
        raise ValueError("tenant_required")
    collection = client.collections.use(collection_name).with_tenant(tenant)
    result = collection.query.near_vector(near_vector=query_vector, limit=4)
    return [{"id":str(o.uuid), "metadata":o.properties} for o in result.objects]
对应官方 Python 查询方式;语法检查通过,未安装或联调两种数据库SDK。

生成:让证据带着来源进入请求

将查询问题与已授权片段分开标记,附 source_id、标题和版本,要求答案中的政策断言指向片段ID;没有足够材料则说明缺口。数据库里的向量不会自动传给 Claude,只有应用实际放入请求的内容才进入本轮上下文。检索文本里的“忽略规则”等句子不能升级为指令。

遇到术语和编号检索不佳,可比较关键词、向量与混合检索;重排序用于改善候选顺序,不是保证正确的开关。不要把某个相似度阈值当所有库通用标准,不同距离度量和返回分数可能不同。

选型与验收

两种方案都应比较部署责任、团队运维能力、备份恢复、权限模型、可观察性和实际账单,而非“托管一定最快、自部署一定更安全”。用一组有正确来源的真实问题衡量检索召回、来源准确、回答忠实和拒答合理性,模型评价只作辅助。

上线前故意测试跨租户检索、过期条款、同名文档、删除后仍被缓存和没有答案的问题。本文适配函数完成离线假对象检查,未做在线服务测试;数据库授权、索引结构和依赖版本仍需在项目中确认。

参考来源

资料核对日期:2026-10-04。涉及产品与账户条件时,请以当前官方说明为准。