最近在研究 chatpdf.com 类的项目,
主要功能是通过 gpt 实现: 问题结合文章内容的 ai 对话,
具体的实现原理是
[ol]利用 embedding 接口对文章内容进行向量化, 存储索引提问的问题再次利用 embedding 接口进行向量化根据 问题的向量数据在 文章的索引中进行搜索, 找寻到近似的章节将 问题和近似的 embedding 一同提交到 complation 接口, 获取到 openai 的回复
[/ol]
结合以上思路实现了 chatdoc 这个项目, 支持更丰富的文件类型, 如 .pdf, .epub, .docx, .md, .txt, 甚至支持填写链接
当然程序中会根据不同的文件类型先去解析出文本, 然后再进行上面的索引构建等步骤
本项目使用到的技术
[ol]语言: 前端 vue, 后端 python向量索引构建: llama_index 这个库是对索引构建及 openai 查询的封装, 功能十分丰富文件解析: EbookLib, epub2txt, PyPDF2, beautifulsoup4 等
[/ol]
github: https://github.com/daodao97/chatdoc
欢迎大家试用并提出改进意见, 如果想要支持更多文件格式也可以留言.
预览图, UI 还比较丑, css 太难写了😭 (有前端大佬有兴趣一起改进的话那就更好了)
索引, embedding, GPT, openai