查看原文
其他

在文档内容搜索这件事情上,它能比 ChatGPT 做的更好

小 G GitHubDaily 2023-10-08

公众号关注 “GitHubDaily”

设为 “星标”,每天带你逛 GitHub!

自 OpenAI 开放 GPT3.5/4 的 API 接口以来,不少人开始基于它来搭建本地知识库,并尝试用 AI 训练自己的客服系统、智能助理、法律或金融顾问等等。

但是,这里面有一个问题,就是通过 ChatGPT 返回的答案,并不一定 100% 真实可信,这对于一些对内容比较严谨的论文、行业分析报告、法律合同文件来说,用 ChatGPT 就不是最优解了。

那么,怎么做到数据真实可信,在保证隐私安全的前提下,快速提升文档检索效率呢?

这里给大家推荐一个我最近在 GitHub 看到的开源解决方案:Semantra,一款方便人们进行语义搜索的开源工具。

与传统的文本匹配方式不同的是,它能够直接使用语义查询。

GitHub:https://github.com/freedmand/semantra

使用命令行即可快速运行,快速处理本地的文本和 PDF 文件。在任务完成后,它会在本地搭建一个 Web 搜索页面,让你能在界面上对文档进行查询。

Semantra 的设计目的是方便易用,可定制,并且注重隐私。适合需要在大量文档中进行精确搜索的个人或团体,例如新闻从业者、研究员、学生或教师等。

下面说下怎么安装和使用。

安装 & 使用

首先,你需要确认电脑当前的 Python 版本 >= 3.9。

最简单的安装方式是使用 pipx。如果你还没有安装 pipx,可以运行如下命令:

python3 -m pip install --user pipx
python3 -m pipx ensurepath

打开一个新的命令行终端窗口,让 pipx 设置的新路径设置生效。然后运行:

pipx install semantra

这个命令会将 Semantra 安装到你的电脑上,并添加到环境变量中。

这时,你可以在终端中输入 semantra --help 命令,看看有没有对应的输出结果。

Semantra 的主要作用,是对存储在本地计算机上的文档(文本或 PDF 文件)进行操作,你可以选择处理单个或多个文档。

PS:所有文档在第一次运行处理时,花费的时间会比较长,但是第二次处理会快很多,按作者的说法,基本上能做到瞬间完成处理。

使用 semantra 命令,对单个文档进行处理:

semantra doc.pdf

同时处理多个文档:

semantra report.pdf book.txt

文档处理成功后,将在本地启动一个 Web 服务器。默认情况下,链接指向 localhost:8080

打开该链接后,便可以开始在此网页上对文档进行语义查询,并根据返回的结果,使用 +- 给结果打标签,优化下一次查找。

也即是说,你用的越多,它查找的结果就越准确。

该项目对文档的处理有两种方式:「内嵌模型」和调用「OpenAI API」。默认是用的 MPNet 语言模型。

如果你电脑配置还过得去,或者想离线处理文档,可以优先选择下载大语言模型,这种方式可以最大程度保证你的隐私安全。

如果想用 OpenAI API,项目也提供了相对应的方案,不过所产生的 Token 消耗,你需要自行承担。

针对这两种方案,作者都在 GitHub 中给出了详细文档,这里便不再赘述。

具体选用哪个,我个人建议是,在这个需求上,没必要用 OpenAI,因为语义理解,大部分语言模型已经做的很不错了。

ChatGPT 的主要能力,是基于它原有知识,帮你发散思维,给你提供多种解决方案。在文档查询这件事情上,只需要 AI 能够清晰理解我们的表达,并给出明确指向即可。

自 ChatGPT 火了之后,很多人都想着把所有工作交给它来处理,但面对一些需要保证数据真实性、操作严谨性的工作,强行让 ChatGPT 来处理, 反而是一种舍本逐末的行为。

这也是 semantra 项目本次给我的最大启发。

如果你想了解更多有趣、实用的 AI 技术,以及 ChatGPT 新进展,欢迎点击下方链接,加入我们社群进一步交流探讨。

👇 每个进群的人,都会收到我们赠送的一枚 ChatGPT 账号。

社群入口:ChatGPT 社群,正式上线!

为了能够第一时间接收到文章推送,建议大家给 GitHubDaily 公众号加个星标。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存