ChartPipeline / docs /05_title_generator.md
Ray1ee01's picture
Upload folder using huggingface_hub
1569336 verified
|
Raw
History Blame Contribute Delete
3.77 kB
# 标题生成模块 (title_generator)
标题生成模块(`title_generator`)是 ChartPipeline 框架的第三个处理环节,负责基于数据内容和洞察生成有吸引力的标题和副标题。
## 功能简介
本模块通过分析数据洞察和图表类型,生成能够准确概括数据主题并突出关键发现的标题。生成的标题简洁明了,引人入胜,使读者能够迅速理解可视化内容的核心信息。
## 输入与输出
### 输入
模块接收包含以下字段的数据对象:
- `metadata`: 原始元数据(包含标题、描述等)
- `chart_type`: 图表类型推荐
- `datafacts`: 数据洞察
### 输出
模块向输入数据添加 `titles` 字段,结构如下:
```json
{
"titles": {
"main_title": "美国国家紧急状态持续增长",
"sub_title": "1976年以来宣布的紧急状态中大多数仍然有效"
}
}
```
输出字段说明:
| 字段 | 类型 | 描述 |
|------|------|------|
| `main_title` | 字符串 | 图表主标题,简洁地概括核心信息 |
| `sub_title` | 字符串 | 图表副标题,提供补充信息和上下文 |
## 实现方法:RAG-based 标题生成
本模块采用基于检索增强生成(Retrieval-Augmented Generation, RAG)的方法实现标题生成,主要包括以下技术点:
1. **向量化和相似度检索**: 使用SentenceBERT将输入数据转换为语义向量,并通过FAISS向量数据库高效检索相似样例
2. **数据预处理**: 将输入的图表数据、元数据和数据洞察组织成结构化文本
3. **相似案例检索**: 基于输入数据的语义特征,检索训练集中最相似的图表及其标题
4. **大模型增强生成**: 结合检索到的案例和当前数据特征,通过大语言模型生成适合的标题和副标题
## 使用示例
### 命令行调用
```bash
python -m modules.title_generator.title_generator --input input_data.json --output output_data.json --index_path faiss_infographics.index --data_path infographics_data.npy --topk 3 --api_key your_api_key --base_url your_base_url
```
### 程序调用
```python
from modules.title_generator.title_generator import process
success = process(
input='input_data.json',
output='output_data',
index_path='faiss_infographics.index',
data_path='infographics_data.npy',
topk=3,
api_key='your_api_key',
base_url='your_base_url'
)
if success:
print("数据洞察生成完成")
else:
print("数据洞察生成失败")
```
## 构建标题生成所需的向量索引
标题生成模块使用一个基于 FAISS 的向量索引来支持检索增强生成(RAG)。该索引需要通过历史图表数据构建,一般仅需在首次使用或数据更新时运行一次。
### 数据格式
构建索引的训练数据应为JSON格式,结构如下:
```json
{
"chart_id_1": {
"metadata": {
"title": "图表标题",
"description": "图表描述",
"main_insight": "图标洞察"
},
"chart_type": ["图表类型"],
"datafacts": [{"annotation": "数据洞察"}],
"data": {
"columns": [{"name": "列名", "type": "列类型"}],
"data": [{"列名": "值"}]
}
},
"chart_id_2": {
// 其他图表数据...
}
}
```
### 使用方式
#### 命令行调用
```bash
python -m modules.title_generator.build_title_index --data training_data.json --index_path faiss_infographics.index --data_path infographics_data.npy
```
#### 程序调用
```python
from modules.title_generator.build_title_index import process
success = process(
data='training_data.json',
index_path='faiss_infographics.index',
data_path='infographics_data.npy'
)
if success:
print("索引构建完成")
else:
print("索引构建失败")
```