Initial commit
This commit is contained in:
116
app/core/rag_utils/README.md
Normal file
116
app/core/rag_utils/README.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# RAG Chunk 分析工具
|
||||
|
||||
这个模块提供了对 RAG chunk 内容进行分析的工具函数,包括:
|
||||
|
||||
## 功能模块
|
||||
|
||||
### 1. chunk_summary.py - Chunk 摘要生成
|
||||
- `generate_chunk_summary(chunks, max_chunks=10)`: 为给定的 chunk 列表生成简洁摘要
|
||||
- 使用 LLM 提取核心信息和关键要点
|
||||
- 摘要长度控制在 100-150 字
|
||||
|
||||
### 2. chunk_tags.py - 标签提取
|
||||
- `extract_chunk_tags(chunks, max_tags=10, max_chunks=10)`: 从 chunk 中提取关键标签
|
||||
- `extract_chunk_tags_with_frequency(chunks, max_tags=10)`: 提取标签并统计频率
|
||||
- 使用 LLM 识别核心概念和专业术语
|
||||
- 自动过滤无意义词汇
|
||||
|
||||
### 3. chunk_insight.py - 洞察分析
|
||||
- `generate_chunk_insight(chunks, max_chunks=15)`: 生成深度洞察报告
|
||||
- `classify_chunk_domain(chunk)`: 对 chunk 进行领域分类
|
||||
- `analyze_domain_distribution(chunks, max_chunks=20)`: 分析领域分布
|
||||
- 提供内容的主题、特点和价值分析
|
||||
|
||||
## 使用示例
|
||||
|
||||
```python
|
||||
from app.core.rag_utils import (
|
||||
generate_chunk_summary,
|
||||
extract_chunk_tags,
|
||||
generate_chunk_insight
|
||||
)
|
||||
|
||||
# 示例 chunk 数据
|
||||
chunks = [
|
||||
"机器学习是人工智能的一个重要分支...",
|
||||
"深度学习使用神经网络进行特征学习...",
|
||||
# ...
|
||||
]
|
||||
|
||||
# 生成摘要
|
||||
summary = await generate_chunk_summary(chunks, max_chunks=10)
|
||||
print(f"摘要: {summary}")
|
||||
|
||||
# 提取标签
|
||||
tags = await extract_chunk_tags(chunks, max_tags=10)
|
||||
print(f"标签: {tags}")
|
||||
|
||||
# 生成洞察
|
||||
insight = await generate_chunk_insight(chunks, max_chunks=15)
|
||||
print(f"洞察: {insight}")
|
||||
```
|
||||
|
||||
## API 接口
|
||||
|
||||
在 `memory_dashboard_controller.py` 中提供了两个对外接口:
|
||||
|
||||
### 1. GET /dashboard/chunk_summary_tag
|
||||
获取 chunk 总结和提取的标签
|
||||
|
||||
**参数:**
|
||||
- `end_user_id` (必填): 宿主ID
|
||||
- `limit` (可选, 默认15): 返回的chunk数量
|
||||
- `max_tags` (可选, 默认10): 最大标签数量
|
||||
|
||||
**返回:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "chunk摘要和标签获取成功",
|
||||
"data": {
|
||||
"summary": "chunk内容的总结...",
|
||||
"tags": [
|
||||
{"tag": "机器学习", "frequency": 5},
|
||||
{"tag": "深度学习", "frequency": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### 2. GET /dashboard/chunk_insight
|
||||
获取 chunk 的洞察内容
|
||||
|
||||
**参数:**
|
||||
- `end_user_id` (必填): 宿主ID
|
||||
- `limit` (可选, 默认15): 返回的chunk数量
|
||||
|
||||
**返回:**
|
||||
```json
|
||||
{
|
||||
"code": 200,
|
||||
"msg": "chunk洞察获取成功",
|
||||
"data": {
|
||||
"insight": "该知识库主要聚焦于技术领域(60%)..."
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 技术特点
|
||||
|
||||
1. **异步处理**: 所有函数都是异步的,支持高并发
|
||||
2. **LLM 驱动**: 使用大语言模型进行智能分析
|
||||
3. **可配置**: 支持自定义处理的 chunk 数量和标签数量
|
||||
4. **错误处理**: 完善的异常处理和日志记录
|
||||
5. **模块化设计**: 每个功能独立,易于维护和扩展
|
||||
|
||||
## 依赖
|
||||
|
||||
- `app.core.memory.utils.llm_utils`: LLM 客户端
|
||||
- `app.core.logging_config`: 日志配置
|
||||
- `pydantic`: 数据验证和结构化输出
|
||||
|
||||
## 注意事项
|
||||
|
||||
1. 所有函数都需要在异步上下文中调用(使用 `await`)
|
||||
2. 处理大量 chunk 时建议设置合理的 `max_chunks` 参数以控制 token 消耗
|
||||
3. LLM 调用可能需要一定时间,建议在前端显示加载状态
|
||||
Reference in New Issue
Block a user