跳转至

5.1 常见特殊数据和应对策略

学习目标

  • 掌握结构化数字表格入库和查询的方式
  • 掌握结构化文本表格入库和查询的方式
  • 掌握半结构化文档入库和查询的方式
  • 掌握图片上文字入库和查询的方式
  • 掌握图片、音频、视频的入库和查询的方式

一、结构化数字表格查询

1 问题

这类表格用向量检索效果极差,尤其是有多个同类表格的情况下,建议直接入结构化数据库,查询的时候使用大模型自动生成sql查询。

XX手机在福建省各市逐月销售记录(单位:万台)

城市 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 全年总量
福州 12.5 8.2 10.3 9.8 11.2 15.6 18.4 16.7 14.5 12.8 13.9 17.2 150.7
厦门 9.8 6.5 8.1 7.6 9.3 12.1 14.2 12.9 11.3 10.0 10.8 13.5 115.1
泉州 15.2 10.0 12.5 11.8 13.6 18.9 22.3 20.1 17.5 15.4 16.7 20.5 194.5
漳州 7.3 4.8 6.2 5.9 7.1 9.8 11.5 10.4 9.0 8.0 8.7 10.9 99.6
莆田 5.6 3.7 4.6 4.3 5.2 7.1 8.4 7.6 6.6 5.8 6.3 7.9 72.1
三明 3.2 2.1 2.6 2.4 2.9 4.0 4.7 4.2 3.6 3.2 3.4 4.3 41.6
南平 2.8 1.8 2.3 2.1 2.5 3.4 4.0 3.6 3.1 2.7 2.9 3.7 36.4
龙岩 4.1 2.7 3.3 3.1 3.7 5.0 5.9 5.3 4.6 4.0 4.3 5.4 52.1
宁德 3.5 2.3 2.9 2.7 3.2 4.3 5.1 4.6 4.0 3.5 3.8 4.8 45.7
平潭 0.8 0.5 0.6 0.6 0.7 0.9 1.1 1.0 0.9 0.8 0.8 1.0 9.8

2 解决方案

2.1 建表方案

你是一位数据库专家,下面的表格是XX手机在福建省各市逐月销售记录(单位:万台),需要写入数据库,给出建表的sql语句,遵照第三范式。


| 城市 | 1月  | 2月  | 3月  | 4月  | 5月  | 6月  | 7月  | 8月  | 9月  | 10月 | 11月 | 12月 | 全年总量 |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- | -------- |
| 福州 | 12.5 | 8.2  | 10.3 | 9.8  | 11.2 | 15.6 | 18.4 | 16.7 | 14.5 | 12.8 | 13.9 | 17.2 | 150.7    |
| 厦门 | 9.8  | 6.5  | 8.1  | 7.6  | 9.3  | 12.1 | 14.2 | 12.9 | 11.3 | 10.0 | 10.8 | 13.5 | 115.1    |
| 泉州 | 15.2 | 10.0 | 12.5 | 11.8 | 13.6 | 18.9 | 22.3 | 20.1 | 17.5 | 15.4 | 16.7 | 20.5 | 194.5    |
| 漳州 | 7.3  | 4.8  | 6.2  | 5.9  | 7.1  | 9.8  | 11.5 | 10.4 | 9.0  | 8.0  | 8.7  | 10.9 | 99.6     |
| 莆田 | 5.6  | 3.7  | 4.6  | 4.3  | 5.2  | 7.1  | 8.4  | 7.6  | 6.6  | 5.8  | 6.3  | 7.9  | 72.1     |
| 三明 | 3.2  | 2.1  | 2.6  | 2.4  | 2.9  | 4.0  | 4.7  | 4.2  | 3.6  | 3.2  | 3.4  | 4.3  | 41.6     |
| 南平 | 2.8  | 1.8  | 2.3  | 2.1  | 2.5  | 3.4  | 4.0  | 3.6  | 3.1  | 2.7  | 2.9  | 3.7  | 36.4     |
| 龙岩 | 4.1  | 2.7  | 3.3  | 3.1  | 3.7  | 5.0  | 5.9  | 5.3  | 4.6  | 4.0  | 4.3  | 5.4  | 52.1     |
| 宁德 | 3.5  | 2.3  | 2.9  | 2.7  | 3.2  | 4.3  | 5.1  | 4.6  | 4.0  | 3.5  | 3.8  | 4.8  | 45.7     |
| 平潭 | 0.8  | 0.5  | 0.6  | 0.6  | 0.7  | 0.9  | 1.1  | 1.0  | 0.9  | 0.8  | 0.8  | 1.0  | 9.8      |

结果如下:

-- 创建城市表
CREATE TABLE cities (
    city_id INT PRIMARY KEY AUTO_INCREMENT,
    city_name VARCHAR(50) NOT NULL UNIQUE,
    region VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 创建产品表
CREATE TABLE products (
    product_id INT PRIMARY KEY AUTO_INCREMENT,
    product_name VARCHAR(100) NOT NULL,
    brand VARCHAR(50) NOT NULL,
    model VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 创建销售记录表
CREATE TABLE sales_records (
    record_id INT PRIMARY KEY AUTO_INCREMENT,
    city_id INT NOT NULL,
    product_id INT NOT NULL,
    year INT NOT NULL,
    month TINYINT NOT NULL CHECK (month BETWEEN 1 AND 12),
    sales_volume DECIMAL(5,1) NOT NULL COMMENT '销售数量(万台)',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (city_id) REFERENCES cities(city_id),
    FOREIGN KEY (product_id) REFERENCES products(product_id),
    UNIQUE KEY (city_id, product_id, year, month)
);

-- 创建年度销售汇总视图(可选)
CREATE VIEW annual_sales_summary AS
SELECT 
    c.city_name,
    p.product_name,
    s.year,
    SUM(s.sales_volume) AS total_sales
FROM 
    sales_records s
JOIN 
    cities c ON s.city_id = c.city_id
JOIN 
    products p ON s.product_id = p.product_id
GROUP BY 
    c.city_name, p.product_name, s.year;

2.2 查询方案

你是一位数据库专家,根据【数据库表结构】和【用户问题】,给出查询数据库的sql语句。
【用户问题】
泉州市四月份出货多少?
【数据库表结构】
-- 创建城市表
CREATE TABLE cities (
    city_id INT PRIMARY KEY AUTO_INCREMENT,
    city_name VARCHAR(50) NOT NULL UNIQUE,
    region VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 创建产品表
CREATE TABLE products (
    product_id INT PRIMARY KEY AUTO_INCREMENT,
    product_name VARCHAR(100) NOT NULL,
    brand VARCHAR(50) NOT NULL,
    model VARCHAR(50),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

-- 创建销售记录表
CREATE TABLE sales_records (
    record_id INT PRIMARY KEY AUTO_INCREMENT,
    city_id INT NOT NULL,
    product_id INT NOT NULL,
    year INT NOT NULL,
    month TINYINT NOT NULL CHECK (month BETWEEN 1 AND 12),
    sales_volume DECIMAL(5,1) NOT NULL COMMENT '销售数量(万台)',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (city_id) REFERENCES cities(city_id),
    FOREIGN KEY (product_id) REFERENCES products(product_id),
    UNIQUE KEY (city_id, product_id, year, month)
);

-- 创建年度销售汇总视图(可选)
CREATE VIEW annual_sales_summary AS
SELECT 
    c.city_name,
    p.product_name,
    s.year,
    SUM(s.sales_volume) AS total_sales
FROM 
    sales_records s
JOIN 
    cities c ON s.city_id = c.city_id
JOIN 
    products p ON s.product_id = p.product_id
GROUP BY 
    c.city_name, p.product_name, s.year;
SELECT 
    c.city_name,
    s.year,
    s.month,
    SUM(s.sales_volume) AS total_sales_volume
FROM 
    sales_records s
JOIN 
    cities c ON s.city_id = c.city_id
WHERE 
    c.city_name = '泉州' 
    AND s.month = 4
    AND s.year = 2025  -- 指定查询年份
GROUP BY 
    c.city_name, s.year, s.month;

二、结构化文本表格查询

1 问题

XX品牌汽车故障与解决办法

故障现象 可能原因 解决方法
发动机无法启动 1. 电瓶没电或电极腐蚀 2. 点火线圈/火花塞故障 3. 燃油泵损坏或油路堵塞 1. 充电或更换电瓶 2. 检查点火系统 3. 检查油泵压力或清洗油路
怠速不稳/抖动 1. 节气门积碳 2. 氧传感器故障 3. 喷油嘴堵塞 1. 清洗节气门 2. 更换氧传感器 3. 使用燃油添加剂或清洗喷油嘴
发动机过热 1. 冷却液不足或泄露 2. 水泵故障 3. 节温器卡滞 1. 补充冷却液并检查管路 2. 更换水泵 3. 更换节温器
排气管冒异常烟 - ‌黑烟‌:空燃比失调(混合气过浓) - ‌蓝烟‌:烧机油(活塞环/气门油封老化) - ‌白烟‌:冷却液进入燃烧室(缸垫损坏) 1. 检查进气/燃油系统 2. 维修发动机内部密封件 3. 更换缸垫

2 解决方案

你是一位汽车行业的专家,将表格【XX品牌汽车故障与解决办法】转化的每一行有效数据转化成一条问答。
XX品牌汽车故障与解决办法

| **故障现象**‌       | ‌**可能原因**‌                                                 | ‌**解决方法**‌                                                |
| ------------------ | ------------------------------------------------------------ | ----------------------------------------------------------- |
| ‌**发动机无法启动**‌ | 1. 电瓶没电或电极腐蚀 2. 点火线圈/火花塞故障 3. 燃油泵损坏或油路堵塞 | 1. 充电或更换电瓶 2. 检查点火系统 3. 检查油泵压力或清洗油路 |
| ‌**怠速不稳/抖动**‌  | 1. 节气门积碳 2. 氧传感器故障 3. 喷油嘴堵塞                  | 1. 清洗节气门 2. 更换氧传感器 3. 使用燃油添加剂或清洗喷油嘴 |
| ‌**发动机过热**‌     | 1. 冷却液不足或泄露 2. 水泵故障 3. 节温器卡滞                | 1. 补充冷却液并检查管路 2. 更换水泵 3. 更换节温器           |
| ‌**排气管冒异常烟**‌ | - ‌**黑烟**‌:空燃比失调(混合气过浓) - ‌**蓝烟**‌:烧机油(活塞环/气门油封老化) - ‌**白烟**‌:冷却液进入燃烧室(缸垫损坏) | 1. 检查进气/燃油系统 2. 维修发动机内部密封件 3. 更换缸垫    |
发动机无法启动故障
Q:XX品牌汽车出现发动机无法启动的情况,应该如何诊断处理?
A:诊断流程:①检查电瓶电量及电极状况,充电或更换电瓶;②检测点火线圈与火花塞工作状态;③测量燃油泵压力,必要时清洗油路。可能原因包括:电瓶失效、点火系统故障或燃油供给异常。

怠速不稳故障
Q:车辆怠速时出现明显抖动现象,XX品牌建议如何检修?
A:检修步骤:①使用专用设备清洗节气门积碳;②用诊断仪检测氧传感器数据流,异常则更换;③添加燃油系统清洁剂或拆洗喷油嘴。主要诱因是:节气门脏污、氧传感器失灵或喷油嘴堵塞。

发动机过热故障
Q:XX品牌汽车仪表显示高温报警,正确的应急处理方案是?
A:应急处理:①立即熄火检查冷却液存量及泄漏点;②听诊水泵运转异响;③测试节温器开启温度。故障根源可能是:冷却液缺失、水泵叶轮损坏或节温器机械卡死。

排烟异常故障
Q:如何通过排烟颜色判断XX品牌汽车发动机故障类型?
A:诊断标准:黑烟:混合气过浓,需检查空气滤清器/燃油压力调节器;蓝烟:烧机油,应测量气缸压力并检查气门油封;白烟:冷却液渗入,重点检测缸盖平面度及缸垫密封性.对应解决方案包括:调整空燃比、大修发动机或更换缸垫总成。 (AI生成)

三、半结构化档案查询

1 问题

某法院关于入室盗窃案的372个判例,内容高度相似,最大的不同是时间、地点、人物、物品名称等实体。

XX市XX区人民法院

刑事判决书

(2025)XX刑初字第XXX号

公诉机关:XX市XX区人民检察院
被告人:张某,男,1990年5月12日生,汉族,初中文化,无业,住XX市XX区XX路XX号。2025年8月15日因涉嫌盗窃罪被刑事拘留,同年8月30日被逮捕。现羁押于XX市看守所。

辩护人:李某,XX律师事务所律师。

案件审理情况:
XX市XX区人民检察院以XX检刑诉〔2025〕XXX号起诉书指控被告人张某犯盗窃罪,于2025年9月20日向本院提起公诉。本院依法适用简易程序,实行独任审判,公开开庭审理了本案。

经审理查明:
2025年7月10日凌晨2时许,被告人张某携带螺丝刀、手套等工具,撬开XX小区3栋2单元101室窗户,潜入被害人王某家中,窃取现金人民币5800元、黄金项链一条(价值人民币12,000元)及笔记本电脑一台(价值人民币6,500元),后逃离现场。同年8月10日,张某在销赃时被公安机关抓获,赃物部分追回。

上述事实,被告人张某在开庭审理过程中无异议,并有被害人陈述、监控录像、价格认定结论书、扣押清单等证据证实,足以认定。

本院认为:
被告人张某以非法占有为目的,入户盗窃他人财物,数额较大,其行为已构成盗窃罪。公诉机关指控罪名成立。鉴于张某到案后如实供述罪行,自愿认罪认罚,部分赃物已追回,可依法从轻处罚。

判决如下:
一、被告人张某犯盗窃罪,判处有期徒刑二年六个月,并处罚金人民币一万元。
(刑期从判决执行之日起计算,判决执行前先行羁押的,羁押一日折抵刑期一日,即自2025年8月15日起至2028年2月14日止。)
二、责令被告人张某退赔被害人王某剩余经济损失人民币8,300元。

如不服本判决,可在收到判决书第二日起十日内向XX市中级人民法院提起上诉。

审判员:XXX
二〇二五年十月十四日
书记员:XXX

2 解决方案

这类文本不适合用向量检索,因为语义非常接近,可以考虑用实体做检索。

解决办法是:抽取关键实体,存入ElasticSearch或milvus元数据

你是一位法律问题专家,从【判决案例】中抽取【特定实体】,并以【指定格式】输出,只允许输出【指定格式】规定的内容,不允许输出任何其他字符。

【特定实体】
["被告人姓名","作案时间","作案地点","赃物","有期徒刑",“罚金”]

【指定格式】
{"被告人姓名":"张大彪","作案时间":"2025年6月25日",,"":"","":"","":"","":"","":""}

四、图片上的文本

1 问题

table

2 解决方案

2.1 ocr

图片量非常大的项目,可以考虑使用传统ocr技术,开源模型里可以选用padddleocr

table_ocr_res_img

2.2 多模态大模型

图片量有限但对效果有较严格要求的项目,可以考虑使用多模态大模型

你是一位文本识别专家,提取出图片上所有的文本
员工编号 姓名 出生日期
ESB-0001 帮 帮 1983-11-7
ESB-0012 帮 帮 忙 1992-1-3
ESB-0113 长孙无忌 2000-10-20
ESB-2200 纳兰性德 1971-1-23
ESB-0016 小 李 1982-2-11
ESB-0321 纳兰明珠 1998-12-31
ESB-0133 司 马 德 1996-5-4
ESB-0002 小 杜 1975-10-10
ESB-0010 小 圆 圆 1992-2-3

如果想要把格式也提取出来,可以这样写提示词

你是一位文本识别专家,提取出图片上所有的文本,并以markdown表格的形式输出
A B C
员工编号 姓名 出生日期
ESB-0001
ESB-0012
ESB-0113 长孙无忌 2000-10-20
ESB-2200 纳兰性德 1971-1-23
ESB-0016
ESB-0321 纳兰明珠 1998-12-31
ESB-0133
ESB-0002
ESB-0010

五、图片检索

1 多模态大模型生成描述文本

图片量有限,绝大部分都是文本的项目,可以考虑使用多模态大模型生成描述,把图片转化成文本来处理,注意:生成文本时要结合图片的上下文,生成尽可能符合情境的描述文本。

birthday

你是一位图片描述专家,描述一下图片的主要内容
好的,这是一张充满温馨和喜悦的生日庆祝照片。

照片的主角是一个小男孩,他正坐在一张铺着金色花纹桌布的桌子前。他头上戴着一顶银色的皇冠形生日帽,帽子上印有“HAPPY BIRTHDAY”的字样,脸上洋溢着幸福和期待的笑容。

男孩面前是一个浅绿色的圆形生日蛋糕,蛋糕上装饰着新鲜的水果,包括切块的芒果、草莓、蓝莓,还有几片橙子干和小华夫饼,看起来非常诱人。他正用一把粉色的塑料蛋糕刀,小心翼翼地准备切下第一块蛋糕。

背景是一个棕色的布艺沙发,整体环境是典型的家庭客厅。整个画面光线明亮,氛围温馨,捕捉到了一个孩子在生日派对上最纯真、最快乐的瞬间。

2 多模态嵌入

图片量很多,文本量较少的项目,可以考虑使用多模态嵌入

六、音频检索

1 语音

使用ASR转换成文本处理

2 音乐

结合元数据,判定音乐的风格和曲目

3 环境音

结合元数据,判定场景。但一般来说效果较差。

七、视频检索

视频是非常综合性的内容,融合了图片、音频、OCR、文本、元数据等各种形态的数据

1 关键帧

参见图片检索部分,使用的时候可以结合视频的标题、描述等信息

2 画面文本和字幕

参见图片上的文本,可以结合音频ASR的结果互相校验

3 音频

参见音频检索,如果是语音,可以结合字幕、视频描述等信息;如果是场景音,可以结合关键帧等信息;如果是音乐,可以结合标题、视频描述等信息进行综合分析。