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来帮忙归类分割不同的搜索向量字段
相关推荐
HyperAI超神经8 分钟前
15亿参数挑战机器人控制,MiniCPM-RobotManip正式开源;覆盖文本/图/视频/动作序列,英伟达发布全模态模型Cosmos3-Edge
人工智能·深度学习·机器人·多模态·图像生成·具身智能·智能体
搞科研的小刘选手15 分钟前
【国际生态学协会主办】2026年生态环境与人工智能国际学术会议(ICAIEE 2026)
人工智能·生态环境·学术会议·会议推荐
笨鸟先飞,勤能补拙15 分钟前
AI 赋能网络安全领域深度剖析
网络·人工智能·windows·安全·web安全·网络安全·github
小鸟你好啊17 分钟前
搭建基于 Solon AI 的 Streamable MCP 服务并部署至阿里云百炼
人工智能·阿里云·云计算
Summer-Bright18 分钟前
深度 | Agent框架大洗牌:AutoGen退场后的新秩序
人工智能·ai·语言模型·ai软件
ThsPool22 分钟前
【遥感学习整理 02】ENVI遥感图像处理基础:从数据读取到遥感信息产品
图像处理·人工智能·学习
非凸科技32 分钟前
非凸智能APP
人工智能
土星云SaturnCloud44 分钟前
抽水蓄能设备智慧运营:基于土星云边缘计算实现机组全生命周期预测性维护
服务器·人工智能·ai·边缘计算
江畔柳前堤1 小时前
系统的本质——从LTI系统到神经网络
人工智能·深度学习·神经网络·机器学习·计算机视觉·数据挖掘·语音识别
HackTwoHub1 小时前
轻量化AI渗透武器库|ARTEX自主攻防系统、资产梳理、漏洞挖掘、链路分析全流程智能化落地
人工智能·安全·web安全·网络安全·系统安全·网络攻击模型·安全架构