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来帮忙归类分割不同的搜索向量字段
相关推荐
羑悻的小杀马特1 小时前
OpenCV 引擎:驱动实时应用开发的科技狂飙
人工智能·科技·opencv·计算机视觉
guanshiyishi4 小时前
ABeam 德硕 | 中国汽车市场(2)——新能源车的崛起与中国汽车市场机遇与挑战
人工智能
极客天成ScaleFlash5 小时前
极客天成NVFile:无缓存直击存储性能天花板,重新定义AI时代并行存储新范式
人工智能·缓存
澳鹏Appen6 小时前
AI安全:构建负责任且可靠的系统
人工智能·安全
蹦蹦跳跳真可爱5896 小时前
Python----机器学习(KNN:使用数学方法实现KNN)
人工智能·python·机器学习
视界宝藏库7 小时前
多元 AI 配音软件,打造独特音频体验
人工智能
xinxiyinhe7 小时前
GitHub上英语学习工具的精选分类汇总
人工智能·deepseek·学习英语精选
ZStack开发者社区8 小时前
全球化2.0 | ZStack举办香港Partner Day,推动AIOS智塔+DeepSeek海外实践
人工智能·云计算
Spcarrydoinb9 小时前
基于yolo11的BGA图像目标检测
人工智能·目标检测·计算机视觉
非ban必选9 小时前
spring-ai-alibaba第四章阿里dashscope集成百度翻译tool
java·人工智能·spring