💾 Stores
💾 Stores
Stores 是一项实验性功能,用于帮助使用相似性搜索进行数据查询。它是一个低级API,仅包括 get、set、delete 和 find。
例如,如果您有某段文本的嵌入表示,并希望找到具有相似嵌入的文本。您可以为您所有文本的块创建嵌入,然后将它们与您要搜索的文本的嵌入进行比较。
这里的嵌入是指表示文本某些信息的数字向量。嵌入是由AI模型(如BERT)或更传统的方法(如词频)创建的。
在此之前,您需要直接与外部向量数据库或库集成。使用stores功能,您现在可以通过LocalAI API完成此操作。
请注意,对嵌入进行相似性搜索只是进行检索的一种方法。更高级的API可以考虑这一点,所以这可能不是最佳起点。
API 概览
有一个内部的gRPC API和一个面向外部的HTTP JSON API。我们将只讨论外部的HTTP API,但HTTP API与gRPC API相对应。有关内部使用的详细信息,请参考 pkg/store/client。
一切都是列格式,这意味着您得到的是两个独立的键和值数组,而不是带有键和值的对象数组。
键是最大宽度为32位的浮点数数组。值是字符串(在gRPC中,它们是字节)。
所有的键向量必须是相同长度的,如果它们是标准化的,则对搜索性能最好。当添加键时,将检测它们是否已标准化以及它们的长度。
所有端点都接受一个 store 字段,指定要操作的存储。目前它们是即时创建的,只有一个存储后端,所以不需要配置。
Set
设置一些键,您可以执行以下操作:
curl -X POST http://localhost:8080/stores/set \
-H "Content-Type: application/json" \
-d '{"keys": [[0.1, 0.2], [0.3, 0.4]], "values": ["foo", "bar"]}'再次设置相同的键将更新它们的值。
成功时返回200 OK,无正文。
Get
获取一些键,您可以执行以下操作:
curl -X POST http://localhost:8080/stores/get \
-H "Content-Type: application/json" \
-d '{"keys": [[0.1, 0.2]]}'键和值都会返回,例如:{"keys":[[0.1,0.2]],"values":["foo"]}
键的顺序不会被保留!如果键不存在,则不会返回任何内容。
Delete
删除键和值,您可以执行以下操作:
curl -X POST http://localhost:8080/stores/delete \
-H "Content-Type: application/json" \
-d '{"keys": [[0.1, 0.2]]}'如果键不存在,则忽略它。
成功时返回200 OK,无正文。
Find
进行相似性搜索,您可以执行以下操作:
curl -X POST http://localhost:8080/stores/find
-H "Content-Type: application/json" \
-d '{"topk": 2, "key": [0.2, 0.1]}'topk 限制了返回的结果数量。结果值与 get 相同,但它还包括一个 similarities 的数组。其中 1.0 是最大相似度。它们按相似度从高到低的顺序返回。