mcpField
D
db-specialized-fit

db-specialized-fit

github.com/hainrixz数据与数据库2169 次安装3 天前更新
代码仓库

关于 db-specialized-fit

db-specialized-fit 是面向向量、时序、图和搜索引擎的数据库审计技能。它检查特定引擎的架构与性能配置,结合静态分析和可选的在线验证,而非套用通用关系数据库规则。

主要功能

  1. 01检查向量维度和距离度量
  2. 02审查向量索引及筛选搜索
  3. 03检查时序分区和数据保留
  4. 04检查图遍历索引与关系
  5. 05审查搜索映射和分片设置

适用场景

  1. 01发现代码中声明的嵌入模型与向量维度不匹配
  2. 02审查时序数据的索引和保留策略
  3. 03检查图遍历入口是否建立索引
  4. 04检查搜索映射是否存在动态字段风险

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hainrixz/claude-db --skill db-specialized-fit

安装后在 Claude Code 中输入/db-specialized-fit确认已加载。

详细介绍

db-specialized-fit (M20) — 向量 · 时间序列 · 图 · 搜索

M20 涵盖用途专一的引擎,其正确性取决于通用关系型审计会忽略的参数。子模块带有字母(M20a..M20d);评分器会在范式配置文件中将它们映射到上级 M20(references/scoring-model.md 中的向量 / 时间序列 / 图类别)。

M20a — 向量(pgvector、Qdrant、Pinecone、Weaviate)

涉及: 设计(Métrica & dimensión、Modelo-version、Metadata/filtro)+ 性能(Índice & params、Búsqueda filtrada、Recall-vs-latencia)。

  • 维度匹配 — 列/集合的维度应与嵌入模型的输出维度相等(例如,text-embedding-3-small 对应 vector(1536))。不匹配属于严重错误(设计,严重级别 5)。
  • 距离度量匹配 — 索引度量(cosine / L2 / inner-product)应与模型训练时使用的度量相匹配;不匹配会在无提示的情况下严重损害召回率。仅当模型在仓库中声明时才评为严重级别 5;否则标记为 directional,且不封顶(遵循 scoring-model 的诚实规则)。
  • 存在并调优索引 — 声明 HNSW(m、ef_construction、ef_search)或 IVFFlat(lists/probes),而不是在大型表上使用暴力顺序扫描(性能)。
  • 记录模型版本 — 嵌入应与模型版本绑定,以便重新嵌入(设计)。
  • 过滤搜索 — 用于前置/后置过滤的元数据本身也应建立索引(性能)。

M20b — 时间序列 / OLAP(TimescaleDB、InfluxDB、ClickHouse)

涉及: 设计(Hypertable-fit、Retención、Precisión-ts & tz)+ 性能(Chunk/retención、Continuous-agg、Compresión、Query)。

  • 超表 / 分区适配 — 大型仅追加时间数据应采用超表 / 按时间分区,并使用合理的块间隔(不能是一个巨型块,也不能有数百万个微小块)。
  • 声明连续聚合 / 汇总表,用于仪表盘查询,而不是扫描原始行。
  • 压缩 / TTL 保留策略 — 应为冷块设置策略;原始数据保留时间应有限。
  • 时间戳精度与时区 — 使用 timestamptz/UTC,而非无时区的本地时间(沿用 M4 规则)。

M20c — 图(Neo4j)

涉及: 设计(Modelado-aristas、Nodos/traversal)+ 性能(Índice-lookup、Traversal、Supernodo)。

  • 边建模 — 关系应具有正确的方向/类型;遍历需要的地方应包含关系属性;不要将关系建模为会削弱图引擎优势的节点对表。
  • 索引支持查找 — 用作遍历起点的入口节点属性应具有索引/约束(CREATE CONSTRAINT ... IS UNIQUE),这样遍历就不会从全标签扫描开始。
  • 超级节点风险 — 关系度数极高、会显著增加遍历成本的节点(性能)。提升严重级别需要实时度数证据;否则标记为 directional。

M20d — 搜索(Elasticsearch、OpenSearch)

涉及: 设计(映射/分析器正确性)+ 性能(查询/分片布局)。

  • 映射与分析器 — 字段应显式设置映射(不要依赖动态映射来处理分析文本);分析器应与语言匹配;应谨慎选择 keyword 或 text。
  • 避免映射爆炸 / 无界动态字段;分片数量应与索引大小相称。

Tier-0 静态检查

解析声明的架构/配置:pgvector vector(N) 列 + CREATE INDEX ... USING hnsw/ivfflat;Qdrant/Pinecone 集合配置(size、distance);Timescale create_hypertable/add_*_policy;ClickHouse ENGINE = MergeTree ... ORDER BY;Neo4j 约束/索引 DDL;ES mappings/settings JSON。交叉检查声明的嵌入模型维度/度量与仓库代码中引用的任何模型 id。

Tier-1 验证查询

  • pgvector:SELECT indexdef FROM pg_indexes WHERE indexdef ILIKE '%hnsw%' OR indexdef ILIKE '%ivfflat%'; 以及使用 \d <table> 检查 vector(N) 的维度。
  • Timescale:SELECT * FROM timescaledb_information.hypertables; 和 ...continuous_aggregates;。
  • Neo4j:SHOW INDEXES;、SHOW CONSTRAINTS;,以及超节点的每节点度数(MATCH (n) RETURN ...)。
  • ES:GET /<index>/_mapping、GET /<index>/_settings。如果无法访问引擎 → needs_api。

发现项

按 schema/finding.schema.json 输出。示例 ID:

  • M20a.embeddings.dim_mismatch — vector(768),但模型输出 1536(fail,严重性 5,轴为 design; 如果模型 ID 在仓库中,则置信度为 established)。
  • M20a.embeddings.metric_mismatch — 索引使用 L2,但模型按余弦距离训练(fail;仅当模型已声明时严重性为 5, 否则为 warn/directional,轴为 both)。
  • M20a.embeddings.no_ann_index — 向量搜索进行顺序扫描(warn,严重性 4,轴为 performance)。
  • M20b.metrics.no_hypertable — 大型时间表不是超表(warn,严重性 4,轴为 both)。
  • M20c.users.unindexed_traversal_root — 遍历起始属性未建立索引(warn,严重性 3,轴为 perf)。 每个发现项:evidence.observed 引用真实 DDL/集合配置的原文(已隐藏密钥); verification.reproduce 是上文使用 $DATABASE_URL 的可运行命令;verification.method 为 schema_introspect、index_check、ddl_parse 或 explain_plan;expected_impact 包含 {axis, confidence, magnitude, rationale} — 使用分档值,绝不提供单独的百分比。

诚信原则

  • 绝不声称索引配置的召回率或延迟数值 — magnitude 仅使用分档值。
  • 仅当仓库中已声明嵌入模型(持久事实)时,指标/维度不匹配才会触发上限。 推断出的不匹配为 directional,且绝不触发上限。超节点/热分区的严重性 5 需要实时度数 证据;否则标记为 directional 或 needs_api,绝不可默默判定通过。

评论

支持 Markdown