当前位置: 首页 > news >正文

如何基于llm+mysql构建轻量级全文搜索

mysql全文检索,通常采用like类似字符串匹配实现。比较麻烦地方在于从原始问题中提取关键信息,并进行有效分词,以提取用于like检索的关键词。

当问题关键词与mysql存储语义相似目标文本串不匹配时,就会检索不到有效信息。

这里参考网络资料,尝试基于LLM,优化基于mysql的全文检索。

1 mysql检索

1.1 问题阐述

以下是一个待检索的用户问题

请列出知识库中工业制冷相关的文档。

针对该问题,首先抽取和构建搜索关键词,比如"工业"、“制造”、“空调”、“制冷”等,然后给予这些目标关键词构建sql查询,示例如下所示。

SELECT id, title, article_content, article_tag FROM articles
WHERE 
(

(title LIKE '%工业%制造%' OR title LIKE '%空调%制冷%') 
OR (title LIKE '%冷冻%设备%' OR title LIKE '%制冷%控制%') 


ORDER BY title DESC

1.2 构建难点

1)抽取/构建关键词

抽取关键词、构建相关检索关键词,特别是抽取的关键词在数据库title等相关串不匹配时,是实现有效检索的关键。

比如,数据库表title字段可能不包含“工业制冷”,有可能只包含“工业”、“制冷”等关键词,也有可能没有“制冷”,而是“冷冻”,“控制等”。

2)查询方式构建

抽取/构建关键词完成后,另外一个关键点就是构建查询句式。

用户问题是转化为统计类的查询、比如count(distinct id)、group by title_count、order by,还是列举类查询,比如select id, titile, article from articles. 

2 基于llm的检索

2.1 llm辅助

目前大模型llm如deepseek v3、qwen3,具备强大的nlp处理能力。

这里尝试借助于llm的nlp处理能力,完成关键词提取和sql查询构建。

以下是prompt示例

假设您是项目组的一个专业的mysql数据管理专家,请将用户问题转化为合适的sql。

要求:

1 从question抽取查询关键词,比如“工业”、“制冷”

2 同时提供4-5个相关或类似的关键词,支持like类文本匹配

3 选择合适的sql查询方式,比如信息列举则采用select xxx from xxx,统计类则采用select (count(xxx)) from xxx group by xxx order by

输入输出示例如下:

问题1: {example_question_1}

SQL1: {example_sql_1}

问题2: {example_question_2}

SQL2: {example_sql_2}

用户问题:

{question}

数据库表信息:

{database_table_info}

2.2 rag强化

为进一步提高检索命中率,先将数据库title等字段取出,采用大模型llm抽取检索关键词。

使用这些关键词构建RAG系统,在构建SQL时,使用RAG查询的方式,为问题匹配多个关键词。

将这些构建关键词融合到上述prompt,生成更有针对性的检索sql,确保能有效命中目标信息。

具体实现过程参考如下文档中的复合查询

https://blog.csdn.net/liliang199/article/details/153317678

总结

整个过程除mysql和llm外,没有计算量大的操作。

mysql和llm都有现成的高效方案,整体实现成本能控制到一个合适的轻量级水平。

reference

---

基于langchain链的SQL DB知识库系统

https://blog.csdn.net/liliang199/article/details/153208506

基于langgraph agent的SQL DB知识库系统

https://blog.csdn.net/liliang199/article/details/153317678

langchain将用户问题转sql查询探索

https://blog.csdn.net/liliang199/article/details/153839198

langchain agent将用户问题转sql并运行sql查询

https://blog.csdn.net/liliang199/article/details/154007162

http://www.dtcms.com/a/565045.html

相关文章:

  • 做uml图网站视频制作软件推荐
  • 深度掌握LCA方法论、OpenLCA建模、GREET能源评估及生物质碳核算R语言分析!
  • 判断题:可再生能源发电利用率指水电、风电、太阳能、生物质能等非化石能源占一次能源消费总量的比重。 这句话为什么错误
  • sward零基础学习,如何管理文档
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P06-29 属性信息委托
  • 3D光学弯管测量系统:空调管路高效质量管控利器
  • 虚幻引擎5 GAS开发俯视角RPG游戏 P06-31 映射标签到属性
  • 微信小程序原生车牌输入器
  • 百度的网址是什么呢优化学校网站建设方案
  • Node.Js Express Sqlite3 接口开发
  • docker上部署 PolarDB-X v2.4.2数据库
  • 待办事项全栈实现:Vue3 + Node.js (Koa) + MySQL深度整合,构建生产级任务管理系统的技术实践
  • 【Solidity 从入门到精通】前言
  • 天硕工业级SSD深度解析:NVMe性能分层的根源与高可靠选型指南
  • 人证查验一体机:公安安全检查的智能新助手
  • Python 查找并高亮显示指定 Excel 数据
  • 如何把xmind里的一整段文字变成独立主题的方法
  • 免费CDN
  • 【Java】流程控制
  • 公司网站开源源码现在pc端网站开发用的什么技术
  • 【weblogic】JND注入漏洞
  • 简单建设一个网站的过程安徽建设工程协会网站
  • Spring Security权限认证机制详解 实战
  • java每日精进 11.03【基于Spring AOP和事件驱动的资源操作消息处理流程(类似于若依框架的@Log注解)】
  • Spring 从 0 → 1 保姆级笔记:IOC、DI、多配置、Bean 生命周期一次讲透
  • SpringBoot 项目基于责任链模式实现复杂接口的解耦和动态编排
  • Java 入门核心知识点分类学习
  • 叫人做网站后不提供源码商机网创业好项目
  • 【2052】范围判断
  • (1)pytest+Selenium自动化测试-序章