功能遐想:语义搜索

本贴最后更新于 397 天前,其中的信息可能已经水流花落

刚才看到一个软件功能介绍,感觉里面的 AI 功能「语义搜索」有点意思。

https://www.bilibili.com/video/BV1Rh411F71c/

我觉得「语义搜索」应该是知识管理的刚需,平常不同的表述一大堆完全记不住,记不住又找不到真的很烦。

我是把思源笔记作为知识库用的,如果能在思源笔记的搜索中引入「语义搜索」的 AI 功能(搜索算法),应该会很有帮助。

这个功能应该能够在本地实现而不用联网


试一下投票功能

你想要这种功能吗?

多选 公开 永不结束 42 票
想要
83% 35 票
用不上
7% 3 票
讨论讨论
9% 4 票

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    23007 引用 • 92542 回帖
1 操作
JeffreyChen 在 2023-11-20 21:43:56 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 我觉得 D 大目前没空搞这些。obsidian 这么大的用户量都没搞这个功能。

    1 回复
  • 所以说是遐想 根本没法指望trollface

    但我觉得更多的 AI 功能应该是个人知识管理的未来必需品

  • zxhd86 1 赞同

    你是否在找:思源小助手插件?

    1 回复
  • 需要有价格不菲的显卡来跑大模型。每个文档都有分段做 embedding 向量。然后搜索词也做 embedding 向量。 最后做个查几个文档,与问题最相近的。这样基本就可了。能接入 openai,也可以调接口完成。

  • 话说思源小助手现在能用吗?我之前下载了,但 README 里没有教程,下载了也没有界面(设置点不开、Dock 多出两个空按钮、块菜单里也没多出什么)

    1 回复
  • 想法是好的,但是想纯本地运行就是有点异想天开了。

    思源现在估计很难入局做这种 AI 类的东西,太耗精力了,再加上 openai 的 api key 的价格也不便宜,我觉得在思源笔记的笔记功能能独当一面之前都不要为了 ai 去做过多投入。

    1 回复
  • 这种「AI」其实就是搜索算法,印象中很久以前就有了,用不上大语言模型那么高端的东西。

    刚才上 GitHub 也搜到了一些相关的项目,但我对搜索这方面不了解,所以也不好说。

  • xnyshu 1 赞同

    这个功能颠覆了双链。更灵活,不需要费时添加链接。

    2 回复
  • 换个角度看也可以更方便建立双向链接

  • zxhd86 1 1 评论

    功能很多,所以文档天然难产,毕竟作者是写给自己用的,他不需要文档就知道怎么用,在写代码花了很大功夫的情况下对于写文档就提不起热情了……

    两个 dock,一个是 ai 对话,能根据你投喂给 ai 的块进行回答,另一个是智能推荐,其实就是语义搜索,会在你写文档的时候自动浮现相似的块。

    但是,需要提前说明的是,在本地运行这个模型,对性能的消耗不小。

    1 回复
    害,写完程序就不想写文档了,这东西真要写文档得写老长了
    leolee
  • 为了能本地运行,你投入的钱都得几万块……

    1 回复
  • 不用啦,用来做 embedding 的模型,不需要推理的那么大,量化以后百来兆的模型中文嵌入效果其实就不错了

    1 回复
  • wumaojj

    颠覆不敢说,但多一个震撼性的自动助理,是很好的。

    就像现在的 AI 审片一样,可以给医生 N 多建议。

    但说,拿掉医生?

    当然,AI 的进化也可能很快打脸。

  • 调成 openAI 或者 索引占用核心改为 1,有时间得加一下星火和百度的嵌入接口

  • 类似这样?

    1 回复
  • 感觉相当不错

  • 大神写篇教程。

  • leolee 1 赞同 1 评论

    虽然我也顶了,不过我要先提醒一下哈,就我目前开发的经验来看,这个功能会面临几个问题:

    如果嵌入使用本地模型的话,首先即使压缩模型的大小,中文可用的 sota 模型 text-vec-chinese 也至少是百来兆的,使用 cpu 嵌入性能占用不低,使用 gpu 的话暂时我还没有找到比较好整合进思源的库(我目前用的是 transformers.js)

    然后如果使用远程的接口的话,要生成嵌入向量就需要把笔记内容发送给服务商的接口(思源小助手的嵌入选项只有本地模型和 open AI 也有这个原因),这里有可能有隐私问题。

    再就是向量的最近邻计算,我用 js 来做的话单纯的计算倒不是很慢,几十万个块也能快速出结果,但是这样做的代价是把全部向量加载进了内存,如果不这样做的化还得找一个合适的向量数据库。

    最后是向量的存储问题,如果检索粒度到单个内容块的话,尤其是对于习惯使用短文本列表的用户,特征向量文件的大小可能比笔记本身还要大很多,这也是一个问题。

    1 回复
    做进软件本体肯定就要找一下合适的向量数据库了,我这种绿皮搞法肯定是不行的
    leolee
  • 我知道这个功能非常难做好,但还是想顶帖看看有没有大佬感兴趣开发trollface

  • 顶顶贴,有人开发咩 👀

  • 这个功能很好,但是我觉得会非常难做好。不谈技术方面的问题,光逻辑层面就有一个大难题。其实视频开头也点出了这个问题了,即每个页面聚焦一个主题,搜索时以页面为基准。

    但是思源是支持 Daily Note 笔记法的,所以在一个日记文档页面中可能会有 N 个不同的主题。而在系统文章中,则是一个页面一个主题了。

    于是问题来了,语义搜索,究竟以什么粒度为基准

    如果以文档页面为基准,那会不会搜出来日记的杂讯?比如我搜一个 iPhone 的价格变化,那么有没有可能会搜出来,在一篇日记当中即写了 iPhone 性能提升,也写了新能源汽车价格变化,这样的一篇日记文档?

    如果以块为基准,那么怎么界定主题的范围?比如我有一篇探讨历年 iPhone 的价格变化的文章,但是 iPhone 和价格这两个关键词,写在了不同的两个块中,那么能搜到吗?

    当然,这只是我这个技术小白的一个疑惑,也许业内已经解决了但是我不知道,说错了还望勿怪huaji

    PS:这其实也是所有支持 Daily Note 笔记法的笔记软件难以解决的问题。搜索其实是以主题为基准的,传统笔记一篇文档就是一个主题,所以搜索相对来说好做。DN 流笔记,日常琐碎用块粒度记录,系统文章又用文档粒度记录,一个搜索方式难以兼容两种不同的书写粒度,所以搜索只有一半的功能。

    1 操作
    Reader 在 2023-12-12 11:39:20 更新了该回帖
请输入回帖内容 ...
JeffreyChen
思源是支持 Markdown 语法输入的块编辑器,不是 Markdown 文件编辑器; 思源笔记同步教程:ld246.com/article/1692089679062

推荐标签 标签

  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    22 引用 • 22 回帖
  • Wide

    Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。

    欢迎访问我们运维的实例: https://wide.b3log.org

    30 引用 • 218 回帖 • 635 关注
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    30 引用 • 96 回帖
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    149 引用 • 257 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 694 关注
  • LaTeX

    LaTeX(音译“拉泰赫”)是一种基于 ΤΕΧ 的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在 20 世纪 80 年代初期开发,利用这种格式,即使使用者没有排版和程序设计的知识也可以充分发挥由 TeX 所提供的强大功能,能在几天,甚至几小时内生成很多具有书籍质量的印刷品。对于生成复杂表格和数学公式,这一点表现得尤为突出。因此它非常适用于生成高印刷质量的科技和数学类文档。

    12 引用 • 54 回帖 • 49 关注
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 147 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    17 引用 • 53 回帖 • 140 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖
  • 倾城之链
    23 引用 • 66 回帖 • 138 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 1 关注
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    286 引用 • 248 回帖 • 44 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 76 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 591 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    354 引用 • 1823 回帖 • 1 关注
  • 单点登录

    单点登录(Single Sign On)是目前比较流行的企业业务整合的解决方案之一。SSO 的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

    9 引用 • 25 回帖
  • WordPress

    WordPress 是一个使用 PHP 语言开发的博客平台,用户可以在支持 PHP 和 MySQL 数据库的服务器上架设自己的博客。也可以把 WordPress 当作一个内容管理系统(CMS)来使用。WordPress 是一个免费的开源项目,在 GNU 通用公共许可证(GPLv2)下授权发布。

    66 引用 • 114 回帖 • 223 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 486 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖 • 2 关注
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    545 引用 • 672 回帖
  • GAE

    Google App Engine(GAE)是 Google 管理的数据中心中用于 WEB 应用程序的开发和托管的平台。2008 年 4 月 发布第一个测试版本。目前支持 Python、Java 和 Go 开发部署。全球已有数十万的开发者在其上开发了众多的应用。

    14 引用 • 42 回帖 • 780 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 138 关注
  • 域名

    域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。

    43 引用 • 208 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 101 关注
  • 电影

    这是一个不能说的秘密。

    121 引用 • 604 回帖 • 1 关注
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    5 引用 • 7 回帖 • 1 关注