Skip to content

About

面向中文历史故事/古籍内容的智能问答与多模态生成项目

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

Ancient Charm / 古籍智典

这是我在“古籍智典”项目中整理出来的一份核心代码发布版。这个仓库聚焦的是我已经实现并希望公开展示的主链路能力:中文历史故事/古籍文本的预处理、混合检索、问答生成,以及面向多模态表达的分镜与视频生成骨架。

我把原项目里适合公开的部分抽离成了这个仓库,方便用于作品集展示、项目说明和后续重构。仓库保留了核心思路与关键实现,但我没有把本地数据、模型权重、生成产物和敏感配置一并公开,所以它不是一个“下载后直接运行”的完整成品,而是一份真实反映项目方法和代码结构的发布版。

我在这个项目里做了什么

  • 设计并实现中文故事文本的预处理与索引构建流程
  • 实现 FAISS 向量检索、BM25 关键词检索与 reranker 重排序的混合召回
  • 基于检索命中的故事上下文完成问答生成
  • 将故事正文转换为分镜脚本 JSON
  • 预留语音合成、文生图与视频拼接接口,形成完整多模态生成链路
  • 提供一个可演示的 Gradio 交互入口

仓库内容

  • app_demo.py
    • 发布版演示入口
    • 包含故事定位、问答、分镜生成、素材生成接口和视频合成流程
  • ragsearch/
    • 检索与索引构建核心模块
    • 包含文件读取、中文文本切分、FAISS 向量库构建、BM25 检索和缓存式检索器封装
  • scripts/prepare_corpus.py
    • 将总 PDF 拆分为单篇故事文本和单篇故事 PDF
  • scripts/build_story_summaries.py
    • 批量为故事生成摘要,用于后续检索映射
  • config.example.toml
    • 示例配置文件

当前公开版保留了什么,省略了什么

我保留了项目主链路中最有代表性的代码,包括检索、问答和多模态生成的关键接口;同时主动去掉了不适合公开的部分:

  • API Key、Access Token 等敏感信息
  • 本地绝对路径与私有数据目录
  • 已生成的索引、缓存、日志、音视频和图片素材
  • 大模型权重、嵌入模型、重排序模型本体
  • 项目私有环境下的其他辅助脚本和大体量数据

因此,这个仓库更适合用来展示方法、结构和实现思路,而不是直接作为开箱即用的生产版本。

核心流程

1. 数据准备

我先把总 PDF 中的历史故事按目录拆分为单篇文本和单篇 PDF,再整理后续检索需要的映射文件。

2. 特征构建

我用 FeatureStore 对故事文本做预处理、切分与向量化,并分别建立响应库与拒识库。图片侧检索使用故事摘要映射初始化向量库。

3. 混合检索

我在 ragsearch/retriever.py 中把 FAISS、BM25 和 reranker 串成了统一检索流程,并加入了拒识判断与缓存逻辑。

4. 问答与生成

命中故事后,系统会加载原文上下文并调用大模型生成回答;如果继续生成内容,则会进一步把故事改写为分镜脚本,并进入语音、图片和视频合成链路。

目录结构

.
├─ README.md
├─ app_demo.py
├─ config.example.toml
├─ ragsearch/
│  ├─ __init__.py
│  ├─ feature_store.py
│  ├─ file_operation.py
│  └─ retriever.py
└─ scripts/
   ├─ build_story_summaries.py
   └─ prepare_corpus.py

主要模块说明

app_demo.py

这是我整理后的演示入口。当前版本已经打通了这些环节:

  • 加载配置
  • 初始化检索器
  • 根据用户问题定位故事
  • 基于故事内容生成回答
  • 基于故事正文生成分镜
  • 调用视频拼接逻辑输出成片

其中 synthesize_audio() 和 generate_image() 仍然保留为接口占位,需要在你自己的环境中接入对应的 TTS 和文生图服务。

ragsearch/feature_store.py

这个模块负责数据进入检索系统之前的处理,包括:

  • Markdown / 文本清洗
  • 中文递归切分
  • 向量库构建
  • 响应库与拒识库初始化

ragsearch/retriever.py

这个模块是整个项目的检索核心,主要实现:

  • BM25 检索器构建与缓存
  • FAISS 向量检索
  • 混合召回结果去重
  • reranker 重排序
  • 拒识阈值判断

scripts/prepare_corpus.py

这个脚本用于把总 PDF 拆解成项目可用的数据形态,包括正文提取、故事切分和按章节导出 PDF。

scripts/build_story_summaries.py

这个脚本会逐篇读取故事文本,并调用大模型生成摘要,最终写出摘要映射文件。

使用说明

如果你想在自己的环境里复现这份公开版,至少需要补齐以下内容:

  1. 安装项目依赖,并准备好嵌入模型、重排序模型和大模型 API。
  2. 复制 config.example.toml 并改成你自己的配置。
  3. 准备故事文本、摘要映射和检索所需的数据目录。
  4. 先初始化特征库,再运行演示入口。

可参考的运行入口:

python app_demo.py

如果你需要从原始 PDF 开始整理语料,可以先执行:

python scripts/prepare_corpus.py
python scripts/build_story_summaries.py

已知边界

这份公开版目前有几个明确边界:

  • 默认配置文件只是示例,不能直接用于线上环境
  • 语音和图片生成接口没有在仓库中提供具体实现
  • 检索效果依赖外部模型、数据质量和映射文件完整度
  • 项目保留了原型研发特征,后续仍值得继续工程化整理

适用场景

我公开这份仓库,主要是为了以下用途:

  • 作为课程、比赛、毕设或作品集中的项目代码说明
  • 展示中文古籍/历史故事问答与多模态生成的完整思路
  • 为后续做 API 化、服务化或正式工程化重构保留清晰起点

About

面向中文历史故事/古籍内容的智能问答与多模态生成项目

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages