请按照以下步骤设置并运行项目:
安装 PostgreSQL
admin
。配置项目
config
文件夹。db.js
并更新第 3 行:mayanksharma
更改为您的系统用户名。设置数据库
CREATE EXTENSION vector;
安装奥拉马
ollama pull snowflake-arctic-embed
安装项目依赖项
npm install
node server.js
安装 REST 客户端扩展
测试API
api.http
文件以测试 API 端点。 {
"query" : " your_search_query "
}
{
"title" : " magazine_title " ,
"author" : " author_name " ,
"category" : " magazine_category " ,
"content" : " magazine_content "
}
我将 PostgreSQL 与 pgvector(存储嵌入向量)和 tsvector(存储内容文本)一起使用。
需求:从100万条记录中搜索
添加了分层可导航小世界(HNSW)索引,用于内容嵌入上的矢量搜索原因:搜索需要高召回率,这使得 hnsw 比 ivfflat 更好参考
添加了标题、作者和内容的索引
添加分页以减少加载时间
简介:巅峰
虚拟用户: 20
测试时间: 5 分钟
端点命中: POST /api/v1/magazine/hybridsearch/1(“glasgow”、“game”、“business”、“shubham”、“food”和“modern”)
发送的请求总数: 10,915
每秒请求数: 35.62
平均响应时间: 116 毫秒
使用两个单独的文本搜索和矢量搜索服务
嵌入是由Meta llama“雪花-北极-嵌入”模型生成的,是轻量级的。
第 1 步:首先显示矢量和全文搜索结果中的常见对象,
第 2 步:接下来是仅文本搜索的对象,
第 3 步:矢量搜索中的其余对象。
查询:向量“glasgow”,返回“凯尔特盛宴日记”,其中包含“苏格兰内容”
查询:向量“shortbread”,返回“凯尔特盛宴日记”,因为“shortbread”与“苏格兰”相关
查询:关键字/全文“shubham”,返回作者姓名为“Shubham Thorve”的“Physics Refresher”
查询:关键字/全文“mayank”,返回作者姓名为“Mayank Khurana”的“Digit Gaming”
查询:关键字/全文“月份”,返回“Dalal Street Journal”,其内容为“本月有关视频游戏的所有内容”
/model