功能遐想:语义搜索

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

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

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

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

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

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


试一下投票功能

你想要这种功能吗?

多选 公开 永不结束 39 票
想要
82% 32 票
用不上
7% 3 票
讨论讨论
10% 4 票

  • 思源笔记

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

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

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

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • Reader 1 赞同

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

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

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

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

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

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

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

    1 操作
    Reader 在 2023-12-12 11:39:20 更新了该回帖
  • 其他回帖
  • leolee 1 赞同 1 评论

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

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

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

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

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

    1 回复
    做进软件本体肯定就要找一下合适的向量数据库了,我这种绿皮搞法肯定是不行的
    leolee
  • 想法是好的,但是想纯本地运行就是有点异想天开了。

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

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

  • 查看全部回帖
JeffreyChen
思源是支持 Markdown 语法输入的块编辑器,而不是 Markdown 文件编辑器; 思源笔记同步教程:ld246.com/article/1692089679062

推荐标签 标签

  • WiFiDog

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

    1 引用 • 7 回帖 • 581 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 465 关注
  • VirtualBox

    VirtualBox 是一款开源虚拟机软件,最早由德国 Innotek 公司开发,由 Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。

    10 引用 • 2 回帖 • 15 关注
  • MongoDB

    MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是一个基于分布式文件存储的数据库,由 C++ 语言编写。旨在为应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。

    90 引用 • 59 回帖 • 5 关注
  • CentOS

    CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定的服务器以 CentOS 替代商业版的 Red Hat Enterprise Linux 使用。两者的不同在于 CentOS 并不包含封闭源代码软件。

    238 引用 • 224 回帖
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 199 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖 • 2 关注
  • HHKB

    HHKB 是富士通的 Happy Hacking 系列电容键盘。电容键盘即无接点静电电容式键盘(Capacitive Keyboard)。

    5 引用 • 74 回帖 • 455 关注
  • SMTP

    SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

    4 引用 • 18 回帖 • 622 关注
  • wolai

    我来 wolai:不仅仅是未来的云端笔记!

    2 引用 • 14 回帖 • 1 关注
  • App

    App(应用程序,Application 的缩写)一般指手机软件。

    91 引用 • 383 回帖 • 1 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    334 引用 • 323 回帖 • 1 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 2 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 3 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 56 关注
  • 周末

    星期六到星期天晚,实行五天工作制后,指每周的最后两天。再过几年可能就是三天了。

    14 引用 • 297 回帖
  • Scala

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

    13 引用 • 11 回帖 • 117 关注
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖
  • 996
    13 引用 • 200 回帖 • 1 关注
  • Hexo

    Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。

    21 引用 • 140 回帖 • 4 关注
  • uTools

    uTools 是一个极简、插件化、跨平台的现代桌面软件。通过自由选配丰富的插件,打造你得心应手的工具集合。

    5 引用 • 13 回帖 • 3 关注
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖
  • 电影

    这是一个不能说的秘密。

    120 引用 • 598 回帖 • 2 关注
  • 阿里巴巴

    阿里巴巴网络技术有限公司(简称:阿里巴巴集团)是以曾担任英语教师的马云为首的 18 人,于 1999 年在中国杭州创立,他们相信互联网能够创造公平的竞争环境,让小企业通过创新与科技扩展业务,并在参与国内或全球市场竞争时处于更有利的位置。

    43 引用 • 221 回帖 • 156 关注
  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 627 关注
  • Windows

    Microsoft Windows 是美国微软公司研发的一套操作系统,它问世于 1985 年,起初仅仅是 Microsoft-DOS 模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也慢慢的成为家家户户人们最喜爱的操作系统。

    220 引用 • 472 回帖