学习笔记 · Obsidian
检索、存储、图数据库与缓存供应商
原则
Vector store、retriever、chat history、LangGraph checkpoint/store 和 LLM cache 有不同的一致性和保留周期,不应因为同一供应商都支持就共用表/集合或生命周期。例如 checkpoint 要支持并发恢复与幂等,semantic cache 允许近似命中但会带来跨租户泄漏风险,vector index 则必须绑定 embedding schema。
组件覆盖
| Provider | 包/组件 | 关键边界 |
|---|---|---|
| Aerospike | langgraph-checkpoint-aerospike, langgraph-store-aerospike | provider 页聚焦 checkpointer/store,非通用 vector store;需验证索引、TTL、事务和批操作 |
| Astra DB | langchain-astradb; VectorStore、LLM/Semantic Cache、Loader、Retriever、Store/ByteStore | application token 与 endpoint 应按环境/租户隔离;semantic cache 必须纳入数据分类 |
| Chroma | langchain-chroma; Chroma、SelfQueryRetriever | 本地原型与服务化部署的持久性/备份不同;metadata filter 需同样做租户强制 |
| CockroachDB | langchain-cockroachdb; async vector store、hybrid search、chat history、checkpointer | 页面特别覆盖 row-level TTL、性能与多租户;要设计连接池、索引和分布式事务边界 |
| CrateDB | langchain-cratedb; vector store、loader、chat history、full/semantic cache | 搜索与会话/缓存的表结构与保留期必须分开;防止 cache 跨用户命中 |
| Elasticsearch | langchain-elasticsearch; Embeddings、Store/Retriever、LLM/embedding cache、ByteStore、DB chain | 映射、dense/sparse 字段、索引别名和 refresh 策略是 schema;生成查询的 chain 需限制索引与查询复杂度 |
| Graph RAG | langchain-graph-retriever; GraphRetriever | 需明确图边、遍历深度、去重与访问控制;不以图遍历替代业务权限 |
| Kùzu | langchain-kuzu; KuzuGraph、KuzuQAChain | 本地图数据库的文件生命周期、并发写和生成查询必须单独验证 |
| Memgraph | langchain-memgraph; MemgraphQAChain、graph、toolkit | 自然语言到查询/工具为高风险路径;只授予只读、限量、限时查询 |
| Metal | MetalRetriever + metal_sdk | 页面是简短旧式指南,上线前必须重新核对 SDK 维护状态和 API 契约 |
| Milvus | langchain-milvus; Milvus vector store | 维度、metric/index type、partition/collection、一致性级别和 alias 切换需显式化 |
| MindsDB | provider 级 LangChain AI engine 导航 | 页面未给出具体 LangChain Python 类;部署/微调契约需回到 MindsDB 文档并 POC |
| MongoDB | langchain-mongodb; MongoDBCache | provider 页将自管 cache 与 Atlas 能力分开;连接串、TTL index 和字段加密需管理 |
| MongoDB Atlas | vector/full-text/hybrid retrievers、LLM/semantic caches | 需事先建立对应搜索索引;filter 必须强制 tenant,不接受模型直接传入任意 pipeline |
| Motörhead | Rust memory server,增量摘要 | 页面只指向外部服务启动;需核对项目活跃度、租户隔离、摘要丢失性和数据删除 |
| Neo4j | langchain-neo4j; Neo4jVector、GraphCypherQAChain/Graph、Saver | Cypher 生成应用只读账户、allowlist、查询超时/行数上限;vector 与 graph checkpoint 分离 |
| Oracle AI Vector Search | langchain-oracledb; loader/splitter/in-DB embeddings/summary/OracleVS | 需 Oracle DB、ONNX 模型与可选第三方凭据;数据库 provider 无需外部凭据,三方 provider 则必须存储 credential |
| Pinecone | langchain-pinecone; dense/sparse vector store、sparse embeddings、self-query | 索引 dimension/metric、namespace 与 metadata filter 必须绑定;dense/sparse hybrid 要校准权重 |
| Qdrant | langchain-qdrant; FastEmbedSparse、SparseEmbeddings、QdrantVectorStore | collection 配置要区分 dense/sparse/multi-vector;payload filter 强制租户条件 |
| Redis | langchain-redis; standard/semantic cache、vector store/retriever | standalone/sentinel/cluster URL 契约不同;需 TTL、key prefix、内存策略与多租户隔离 |
| Remembrall | 托管长期记忆/RAG/观测平台 | provider 页只给出登录/API key,未提供详细 Python 契约;数据保留、删除和出境需先评审 |
| Weaviate | langchain-weaviate; WeaviateVectorStore | collection schema、vectorizer 是外置还是服务端生成、hybrid alpha 与 tenant 必须固定 |
数据与一致性清单
- 每条记录保存 tenant、source ID/version、chunk ID、embedding model/revision/dimension、ingestion timestamp;删除操作能追溯到所有派生向量。
- 索引创建、数据回填、alias 切换和回滚是一个发布流程,不在应用启动时隐式改 schema。
- semantic cache key 包含 tenant、权限摘要、model/prompt/tool 版本和语言;对敏感回答、工具副作用和时效数据默认禁用缓存。
- chat history/checkpoint 按会话和 tenant 隔离,定义 TTL、忘记/删除流程、并发版本号与恢复语义。
性能验证
用真实维度、数据量、filter 选择性和 top-k 压测 p50/p95/p99;单独测试新写入可见延迟、批量 upsert/delete、索引重建、节点失败、连接池耗尽和召回率。对 graph/SQL 生成还要强制解析计划、扫描行数和执行时间上限。