SuperAPI AI 工具集

database-expert

数据与分析

查看项目

更新于 10-16 10:34

技能介绍

Database Expert

面向数据库设计、优化与管理的综合指南技能。

数据库选型

技能给出四类数据库的定位对照:PostgreSQL 为关系型,适合复杂查询、ACID、JSON 支持;MongoDB 为文档型,适合灵活模式与快速迭代;Redis 为键值型,适合缓存、会话与实时场景;SQLite 为嵌入式,适合移动端、桌面与测试。

PostgreSQL

模式设计

示例包含带约束的 users 表(UUID 主键、唯一 email、非空字段、status 的 CHECK 约束、带时区的 created_at 与 updated_at)、针对 email 与 status 的索引(含 status 部分索引)、自动更新 updated_at 的函数与触发器,以及带外键级联删除、TEXT[] 标签、TSVECTOR 检索向量的 posts 表及其 GIN 全文检索索引。

查询优化

示例包含使用 EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) 分析查询;为已发布内容建立部分索引(published_at IS NOT NULL);使用 INCLUDE 建立覆盖索引以支持 index-only scan;以及对 LOWER(email) 建立表达式索引。

高级特性

示例包含 CTE(统计近 30 天活跃作者及其文章数)、窗口函数(ROW_NUMBER 分区排名、LAG 取上一篇发布时间)、JSON 操作(用 ->> 与 @> 提取和过滤 metadata),以及用于层级结构、限制深度为 10 的递归 CTE。

MongoDB

模式设计模式

示例说明 1:few 关系使用嵌入(user 文档内嵌 profile 与 addresses 数组),1:many 关系使用引用(post 文档持有 authorId)。

聚合管道

示例对 orders 集合执行 $match(状态为 completed 且创建时间不早于 2024-01-01)、$lookup 关联 users、$unwind、按月份 $group 统计营收与订单数、$sort 排序。

索引

示例包含复合索引(authorId + createdAt 降序)、带权重(title 10、content 1)的文本索引、针对 pending 状态的部分索引,以及 expireAfterSeconds 为 3600 的 TTL 索引(用于 sessions)。

Redis

数据结构

示例涵盖字符串(SET/GET/SETEX/INCR)、哈希(HSET/HGETALL)、列表作为队列(LPUSH/RPOP)、集合(SADD/SISMEMBER)、有序集合作为排行榜(ZADD/ZREVRANGE WITHSCORES),以及 Streams 事件日志(XADD/XREAD)。

缓存模式

以 TypeScript 示例给出:缓存旁路(先查缓存,未命中查库后写入 setex,TTL 3600 秒);基于 INCR 与 EXPIRE 的限流;基于 SET NX EX 的分布式锁及使用 Lua 脚本原子释放锁(并建议生产环境使用预加载脚本配合 EVALSHA)。

发布订阅

示例包含发布端 publish 事件,以及订阅端 duplicate 连接、subscribe 频道并在 message 回调中解析处理事件。

查询优化检查清单

PostgreSQL:对慢查询使用 EXPLAIN ANALYZE;为 WHERE、JOIN、ORDER BY 列建索引;对过滤查询使用部分索引;使用连接池(pgbouncer);定期执行 VACUUM 与 ANALYZE。

MongoDB:按查询模式建立复合索引;尽量使用覆盖查询;避免文档中出现过大数组字段;使用 explain() 进行监控。

Redis:选用合适的数据结构;为缓存键设置 TTL;批量操作使用 pipelining;监控内存使用。

面向 AI/RAG 工作负载的向量数据库

概述

向量数据库存储高维嵌入并支持相似度搜索,是 RAG(检索增强生成)与语义搜索应用的基础。技能给出对照:pgvector 为 PostgreSQL 扩展,适合已有 Postgres 技术栈与混合查询;Pinecone 为托管云服务,适合生产规模与无服务器场景;Weaviate 支持自托管或云,适合多模态与 GraphQL 接口;Chroma 为嵌入式或本地,适合原型与小数据集;Qdrant 支持自托管或云,适合高性能与丰富过滤;Milvus 支持自托管或云,适合大规模与分布式。

pgvector(PostgreSQL 扩展)

示例包含创建 vector 扩展;documents 表(含 VECTOR(1536) 的 embedding 列,注释说明对应 OpenAI text-embedding-3-small 维度);HNSW 索引(vector_cosine_ops,m=16,ef_construction=64)或 IVFFlat 索引(lists=100,需训练);使用余弦距离的相似度查询并可结合 metadata 过滤;以及结合全文检索 ts_rank 与向量得分的混合搜索(加权 0.3 与 0.7)。

Pinecone(托管)

Python 示例包含创建索引(dimension=1536,metric=cosine,ServerlessSpec 指定云与区域)、获取索引句柄、带 metadata 的 upsert,以及带 metadata 过滤(category 等于 faq)的 top_k 查询。

Chroma(本地/嵌入)

Python 示例包含使用 PersistentClient 指定本地路径、创建或获取带 hnsw:space 为 cosine 的集合、直接添加文本(自动嵌入)或添加预计算嵌入、以及带 n_results 与 where 过滤的查询。

嵌入存储与索引最佳实践

技能以对照表给出建议:嵌入模型可选 text-embedding-3-small(1536 维)或 nomic-embed(768 维);索引类型小于 100 万向量用 HNSW,超过用 IVFFlat;维度越低搜索越快但精度略降;批量插入每次 100-1000 个向量;metadata 存放可过滤属性;混合搜索结合关键词(BM25)与向量效果最佳;在 top-k 结果上使用交叉编码器重排;分块建议每块 500-1000 token,重叠 100-200。

限制

本技能以代码示例与检查清单为主,资料未提供具体的安装命令、部署方式、版本要求、性能基准以及任何收费或价格信息,相关内容暂未提供。