有,Vectra可以,并且是开源的。
Vectra 是一个 Node.js 的本地向量数据库,类似于 Pinecone 或 Qdrant,但使用本地文件构建。它允许用户在创建索引时指定要索引的元数据属性,并将这些字段存储在 index.json 文件中。
所有其他元数据将存储在磁盘上的单独文件中,每个项目都使用 GUID 进行索引。
Vectra 支持与 Pinecone 类似的 MongoDB 查询操作子集,并返回按相似性排序的结果。
每个项目都会首先通过元数据过滤,然后进行相似性排名。
Vectra 的整个索引都加载到内存中,因此不适合用于长记忆聊天机器人内存等情况。
它旨在用于小型静态数据集的情况,例如无限的几次示例或单个文档,用户想要对其进行询问。
Vectra 不直接支持 Pinecone 样式的命名空间,但可以通过创建单独的 Vectra 索引(和文件夹)来模拟每个命名空间。
安装 Vectra 后,用户需要创建一个 LocalIndex 实例,并指定存储项目的文件夹的路径。然后,用户可以从异步函数中创建索引,向其添加项目并查询项目。
npm install vectra
import { LocalIndex } from 'vectra';
const index = new LocalIndex(path.join(__dirname, '..', 'index'));
if (!await index.isIndexCreated()) {
await index.createIndex();
}
从openai获取embedding插入到vectra中import { OpenAIApi, Configuration } from 'openai';
const configuration = new Configuration({
apiKey: `<YOUR_KEY>`,
});
const api = new OpenAIApi(configuration);
async function getVector(text: string) {
const response = await api.createEmbedding({
'model': 'text-embedding-ada-002',
'input': text,
});
return response.data.data[0].embedding;
}
async function addItem(text: string) {
await index.insertItem({
vector: await getVector(text),
metadata: { text }
});
}
// Add items
await addItem('apple');
await addItem('oranges');
await addItem('red');
await addItem('blue');查询async function query(text: string) {
const vector = await getVector(text);
const results = await index.queryItems(vector, 3);
if (results.length > 0) {
for (const result of results) {
console.log(`[${result.score}] ${result.item.metadata.text}`);
}
} else {
console.log(`No results found.`);
}
}
await query('green');
/*
[0.9036569942401076] blue
[0.8758153664568566] red
[0.8323828606103998] apple
*/
await query('banana');
/*
[0.9033128691220631] apple
[0.8493374123092652] oranges
[0.8415324469533297] blue
*/github:https://github.com/Stevenic/vectra 网友回复
如何写ai提示词让大模型根据主题生成视频脚本json,然后让Hyperframe渲染出mp4视频?
有哪些字体使用等宽编程代码展示?
如果让演唱会歌迷的上万手机屏幕和闪光灯一起被现场中控控制闪烁?
Midjourney为啥进军医疗领域了?
python如何跟踪足球比赛指定球员全场运动标注打聚光灯合成
如何将linux服务器的文件目录映射到windows电脑磁盘?
Docling 与 MarkItDown 两个库有啥不同?
豆包收费后国产其他ai软件也会跟进收费吗?
JPEG 与 HEIF图片格式区别?
centos7版本太旧无法安装python3.11,如何在docker中运行python3.11?


