核心技术方案如下
transfomerjs + indexdb
可能有些小伙伴对这两玩意不太清楚,大致介绍下
知识库我觉得算是一个赛道方向,现在有很多家如 dify,openai 等等,包括阿里等平台,都有提供这类功能服务,通过将用户文本向量化(将文本变成数字),存储到数据库中,最后在搜索时,可通过文本再向量化,达到语义化搜索(向量相似度计算),最后将相应匹配的文本交给 AI 回答.
这样做的好处就是,当你存储的文本如果是 "我想吃苹果", 而你搜索的文本是"我吃苹果"或者"我超级 tm 的想吃苹果"时,是能够搜索到的.
而 RAG,则是实现这样知识库的一个手段,如向量化,分片文本,文本预处理,巴拉巴拉的
向量化,向量化,向量化
通过 transfomerjs 来处理文本向量化,这样咱就完成了最基础也是最核心的地方,参考代码如下
import { env, pipeline } from '@huggingface/transformers';
// Create a pipeline for feature extraction, using the full-precision model (fp32)
const pipe = await pipeline('feature-extraction', 'your-model-name', {
dtype: "fp32",
});
const output = await pipe(inputTexts, { pooling: 'mean', normalize: true })
文档链接: https://huggingface.co/docs/transformers.js/pipelines
而由于是在 web 端,要能存储大量数据的方案,也只有 indexdb 了(好像是可以存储电脑总硬盘量百分之五十哦,记不太清楚了)
但这有个问题,向量化的数据怎么存储到 indexdb 并保证搜索呢???
要知道,大部分服务端存储向量数据方案,是有专门的向量数据库的,而 indexDB 是类似于 Mongodb 的 JSON 存储,这咋玩???
咱们不妨把心思放野一点, 自己实现个最基础的向量数据库试下呢
思路也有,而我,采用了 LSH 方案,细节太多了,后续可以单开篇章来讲,感兴趣的可以直接看源码
啥,你觉得这个技术栈不靠谱,看下面!!!
代码已开源
想看实际演示?这里
有啥能证明这个玩意靠谱呢?这里
1.上了阮一峰的周刊 科技爱好者周刊(第 337 期):互联网创业几乎没了
2.上了 DeepSeek 的集成推荐 https://github.com/deepseek-ai/awesome-deepseek-integration
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.