Skip to content

Latest commit

 

History

History
18 lines (11 loc) · 1.43 KB

2023-10-19-chat-pdf.md

File metadata and controls

18 lines (11 loc) · 1.43 KB

前端视野 | Node.js PDF Chat 实现

今天阅读一篇文章,来自 Node Weekly,讲了作者如何使用 Node.js+OpenAI+ModelFusion 来实现 Chat With PDF 的方案,作者代码在 https://github.com/lgrammel/modelfusion/blob/main/examples/pdf-chat-terminal/src/main.ts,是一个命令行工具。

文章内容

用户和 PDF Chat 工具交互流程图如下:

20231019225132

  • 使用 pdfjs-dist/legacy/build/pdf 一页一页读取 PDF 文件内容,将空白字符替换为空格,最终得到 pageTexts: string[] 数组,每一个元素是一页的文本内容。
  • 使用 modelfusion 包中的 OpenAITextEmbeddingModel 文本嵌入模型,进行分词和嵌入,存入到 vectorIndex 中,vectorIndex 主要用来快速查询向量的相似度。
  • modulefusion 中的相关 API 实现「用户输入——AI 回答」的循环,vectorIndex 用来查询相关背景信息。

我的思考

  • PDF 读取相关操作,可以使用 pdfjs-dist 包,最后其实也是转换为纯文本来操作了。
  • modulefusion 作为一个 npm 包,做了很多工作,方便了我们调用 OpenAI 的接口,分词、嵌入、相似性查找、OpenAI 模型的调用都帮我们封装好了,只需要简单调用就可以快速的实现一个 Chat With PDF 的功能。还是比较推荐的