ai智能搜索生产实现(低门槛实现自然语言搜索)

自然语言搜索是一种搜索方式,用户可以以自然语言的形式提问或描述他们正在寻找的信息,而不是使用特定的查询语法或关键字。简单来说,就是用户可以用日常的对话方式来进行搜索。

这种搜索方式的优点是更加直观和用户友好,因为用户不需要担心如何准确地拼写关键词或掌握复杂的查询语法。

用户可以以提问的方式来搜索想要的数据,用于替代常规的Elasticsearch或者是数据搜索。

实现思路

原始数据预处理

首先根据需求确定搜索的数据范围,当数据有变动或者新增或者初始化的时候,把数据的需要向量搜索匹配的字段拼成字符串,然后用这个字符串去请求embeddings接口计算出向量,同时一些数字数据相关的有筛选需求的字段也一并与数据id和之前计算出的向量存入(更新)向量数据库。

自然语言处理

这一流程步骤主要的职责是把用户搜索输入的自然语言转换成业务代码可以理解的数据结构

这一块可以用已有的模型api,优点是性能好,缺点是api需要收费。如果自己部署模型的话,优点是免费,缺点是性能可能不太好,有一定的部署成本

这一块可以使用chatgpt接口来实现,通过话术,让chatgpt返回一个json,里面包含用户想要查询的信息的数据结构

话术示例:

Existing a database table, which has sale_count (sales) field, help me to generate the product filter conditions (if any), as well as product-related text information (I subsequently use this information to do vector matching). You need to return me directly to the json similar to mongodb query, do not return redundant fields. Such as {"sale_count":{"$gte":1000}, "text": "beauty category"}, which text is the product you extracted text information, in addition to the information outside the specified fields, you have to include in this, to try to perfect. You directly return json to me can, do not return non-json. now help me generate "help me find out the furniture category cumulative sales of more than 4000 pieces of goods, preferably the type of furniture in the kitchen, to be formaldehyde-free"

其中双引号部分替换成用户的输入,gpt返回就可以得到一个json:

kotlin 复制代码
{
"sale_count": {"$gte": 4000},//这部分是作为条件搜索
"text": "furniture category kitchen formaldehyde-free"
}

如果搜索的更复杂一些,gpt返回如

bash 复制代码
{
"sale_count": {"$gte": 4000},
"region":"US",
"price":{"$lte":5000}
"text": "furniture category kitchen formaldehyde-free"
}

其中除了text字段,其他字段为筛选字段,text字段为需要转化成向量的搜索字段。

业务处理

这里拿到前面自然语言处理后的查询json,分为两部分处理,模糊搜索用向量来搜索,涉及筛选项的直接组装筛选查询,最后合并查询条件并查询向量数据库,最后拿到数据id集合去回表查询业务数据库,最后返回数据给到用户前端

总体架构

调优

话术调优

  • 语言描述部分,使用话术让chatgpt需要更加准确、丰富的把用户想搜的描述出来,不能有歧义或者是漏了用户想要的部分意图。可以根据业务的实际要求,也可以让chatgpt把用户的描述部分同意转化成英文来输出,这样在进行向量搜索的时候英文部分的排行会高一些
  • 逻辑搜索部分,调优话术要让chatgpt准确的理解目前数据库有的字段,不能反回多余的字段或者是本该有的筛选没识别出来
  • 向量计算方面,源数据的字符串文字如果过长了,使用向量搜索的准确性不会很高,可以考虑按逻辑分割成多个小段,再进行向量计算。在用户输入的搜索文字里,也可以通过话术让chatgpt来帮忙归类分割不同的搜索向量字段
相关推荐
代码AI弗森9 分钟前
意图识别深度原理解析:从向量空间到语义流形
人工智能
姚华军12 分钟前
RagFlow、Dify部署时,端口如何调整成指定端口
人工智能·dify·ragflow
老蒋新思维16 分钟前
创客匠人峰会新视角:AI 时代知识变现的 “组织化转型”—— 从个人 IP 到 “AI+IP” 组织的增长革命
大数据·人工智能·网络协议·tcp/ip·创始人ip·创客匠人·知识变现
JoannaJuanCV23 分钟前
自动驾驶—CARLA仿真(0)报错记录
人工智能·机器学习·自动驾驶
小白狮ww27 分钟前
Matlab 教程:基于 RFUAV 系统使用 Matlab 处理无人机信号
开发语言·人工智能·深度学习·机器学习·matlab·无人机·rfuav
飞行增长手记37 分钟前
GPT-5.2 全面升级:AI 进入“加速竞争期”,该如何跟上这波红利?
人工智能
多则惑少则明41 分钟前
AI测试、大模型测试(六)AI agent简介与Prompt提示词
人工智能·prompt·ai测试·ai大模型测试
moonsims42 分钟前
自主高性价比、高精度车规级姿态感知、倾角感知模组-应用消费级无人机、自动驾驶、机器人、智能制造、基础设施、智能穿戴等
人工智能
TMO Group 探谋网络科技1 小时前
AI Agent工作原理:如何连接数据、决策与行动,助力企业数字化转型?
大数据·人工智能·ai
coder-pig1 小时前
Holopix AI + TRAE SOLO | 复刻 GBA 游戏-“口袋妖怪“
人工智能·游戏