SuperAPI AI 工具集

laravel-vector-search

数据与分析

查看项目

更新于 10-16 05:48

技能介绍

用途:在 Laravel 13 中实现语义/向量搜索,依赖 PostgreSQL + pgvector,或 MariaDB 11.7+(13.27 起支持向量查询);MySQL/SQLite 不可用且无回退方案。

主要能力:Schema::ensureVectorExtensionExists() 启用扩展;查询构造器提供 whereVectorSimilarTo()、selectVectorDistance()、whereVectorDistanceLessThan()、orderByVectorDistance();支持传入原始字符串由 AI SDK 自动生成 embedding;默认使用余弦相似度,可通过 minSimilarity(0.0-1.0)设阈值。

使用方式:迁移中启用扩展并创建 vector(1536) 列与 HNSW 索引;模型将 embedding 转为数组并使用 whereVectorSimilarTo;建议用 VectorSearchService 封装查询与阈值逻辑。示例查询:Document::query()->whereVectorSimilarTo('embedding', 'best wineries in Napa Valley', minSimilarity: 0.4)->limit(10)->get()。

适用场景:文档、内容等语义检索,可与经典 where() 组合做日期范围、租户等混合过滤。

限制与注意:必须使用 PostgreSQL(pgvector) 或 MariaDB 11.7+;需创建 HNSW 索引,否则超过约 1 万行会退化为全表扫描;插入与查询的 embedding 模型维度必须完全一致;应缓存 embedding 并锁定模型,更换模型会使全部已存向量失效;不要用 JSON 字符串存向量,不要在同一列混用模型,不要在循环内生成查询向量,应使用 Embeddings::for([...]) 批量处理。建议在批量插入前建好 HNSW 索引,minSimilarity 从 0.3-0.5 起调。