向量存储
本指南将帮助您了解如何作为开发者使用 Rememberizer 向量存储。
Rememberizer 向量存储简化了处理向量数据的过程,使您能够专注于文本输入,并利用向量的力量用于搜索和数据分析等各种应用。
介绍
Rememberizer 向量存储提供了一个易于使用的接口,用于处理向量数据,同时抽象掉向量嵌入的复杂性。由 PostgreSQL 和 pgvector 扩展驱动,Rememberizer 向量存储允许您直接处理文本。该服务处理文本数据的分块、向量化和存储,使您能够更专注于核心应用逻辑。
要深入了解向量嵌入和向量数据库背后的理论概念,请参见 什么是向量嵌入和向量数据库?。
技术概述
向量存储是如何工作的
Rememberizer 向量存储将文本转换为高维向量表示(嵌入),以捕捉语义意义。这使得:
语义搜索:根据意义而不仅仅是关键词查找文档
相似性匹配:识别概念上相关的内容
高效检索:快速从大型数据集中定位相关信息
关键组件
文档处理:文本被分割成最佳大小的块,具有重叠边界以保持上下文
向量化:块使用最先进的模型转换为嵌入
索引:专门的算法组织向量以实现高效的相似性搜索
查询处理:搜索查询被向量化并与存储的嵌入进行比较
架构
Rememberizer 使用以下方式实现向量存储:
带有 pgvector 扩展的 PostgreSQL:用于高效的向量存储和搜索
基于集合的组织:每个向量存储都有自己独立的集合
API 驱动的访问:所有操作的简单 RESTful 端点
开始使用
创建向量存储
在您的仪表板中导航到向量存储部分
点击“创建新向量存储”:
将出现一个表单,提示您输入详细信息。
填写详细信息:
名称:为您的向量存储提供一个唯一的名称。
描述:写一个简短的向量存储描述。
嵌入模型:选择将文本转换为向量的模型。
索引算法:选择向量如何组织以便搜索。
搜索度量:定义向量之间相似性的计算方式。
向量维度:向量嵌入的大小(通常为768-1536)。
提交表单:
点击“创建”按钮。您将收到成功通知,新存储将出现在您的向量存储列表中。
配置选项
嵌入模型
openai/text-embedding-3-large
1536
来自 OpenAI 的高精度嵌入模型
需要最大精度的生产应用
openai/text-embedding-3-small
1536
来自 OpenAI 的更小、更快的嵌入模型
具有更高吞吐量要求的应用
索引算法
IVFFLAT (默认)
反向文件与平面压缩
速度和准确性的良好平衡;适用于大多数数据集
HNSW
层次可导航小世界
对于大数据集更好的准确性;更高的内存要求
搜索指标
余弦 (默认)
测量向量之间的角度
通用相似性匹配
内积 (ip)
向量之间的点积
当向量大小重要时
L2 (欧几里得)
向量之间的直线距离
当空间关系重要时
管理向量存储
查看和编辑向量存储:
访问管理仪表板以查看、编辑或删除向量存储。
查看文档:
浏览特定向量存储中的单个文档及其相关元数据。
统计信息:
查看详细统计信息,例如存储的向量数量、查询性能和操作指标。
API 密钥管理
API 密钥用于验证和授权访问 Rememberizer 向量存储的 API 端点。正确管理 API 密钥对于维护您的向量存储的安全性和完整性至关重要。
创建 API 密钥
前往您的向量存储详细信息页面
导航到 API 密钥管理部分:
它可以在“配置”选项卡中找到
点击 “添加 API 密钥”:
将出现一个表单,提示您输入详细信息。
填写详细信息:
名称:为 API 密钥提供一个名称,以帮助您识别其用例。
提交表单:
点击“创建”按钮。新的 API 密钥将被生成并显示。确保复制并安全存储它。此密钥用于验证对该特定向量存储的请求。
撤销 API 密钥
如果不再需要 API 密钥,您可以删除它以防止任何潜在的滥用。
出于安全原因,您可能希望定期更换您的 API 密钥。这涉及生成一个新密钥并撤销旧密钥。
使用向量存储 API
在创建向量存储并生成 API 密钥后,您可以使用 REST API 与其进行交互。
代码示例
```ruby require 'net/http' require 'uri' require 'json'
class VectorStoreClient def initialize(api_key, vector_store_id) @api_key = api_key @vector_store_id = vector_store_id @base_url = 'https://api.rememberizer.ai/api/v1' end
获取向量存储详细信息
def get_vector_store_info uri = URI("#{@base_url}/vector-stores/#{@vector_store_id}") request = Net::HTTP::Get.new(uri) request['x-api-key'] = @api_key
end
上传文本内容
def upload_text(name, content) uri = URI("#{@base_url}/vector-stores/#{@vector_store_id}/documents/text") request = Net::HTTP::Post.new(uri) request['Content-Type'] = 'application/json' request['x-api-key'] = @api_key
end
搜索文档
def search(query, num_results: 5, prev_chunks: 1, next_chunks: 1, threshold: nil) uri = URI("#{@base_url}/vector-stores/#{@vector_store_id}/documents/search") params = { q: query, n: num_results, prev_chunks: prev_chunks, next_chunks: next_chunks }
end
列出文档
def list_documents uri = URI("#{@base_url}/vector-stores/#{@vector_store_id}/documents") request = Net::HTTP::Get.new(uri) request['x-api-key'] = @api_key
end
上传文件(多部分表单)
def upload_file(file_path) uri = URI("#{@base_url}/vector-stores/#{@vector_store_id}/documents")
end
private
def send_request(uri, request) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = (uri.scheme == 'https')
end end
{% endtab %}
{% tab title="cURL" %}
{% endtab %} {% endtabs %}
性能考虑
即将推出:向量存储架构图
该技术架构图将说明:
PostgreSQL + pgvector 基础架构
索引算法结构(IVFFLAT 与 HNSW)
向量空间中的搜索指标如何工作(视觉比较)
文档分块过程及重叠可视化
不同规模下的性能考虑可视化
针对不同数据量的优化
小型 (<10k 文档)
IVFFLAT, 余弦相似度
简单配置提供良好性能
中型 (10k-100k 文档)
IVFFLAT, 确保定期重建索引
搜索速度与索引维护之间的平衡
大型 (>100k 文档)
HNSW, 考虑增加向量维度
更高的内存使用,但在规模上保持性能
分块策略
分块过程对搜索质量有显著影响:
分块大小:Rememberizer 使用默认的分块大小为 1024 字节,重叠 200 字节
较小的分块(512-1024 字节):更精确的匹配,更适合特定问题
较大的分块(1500-2048 字节):每个匹配中有更多上下文,更适合广泛主题
重叠:确保在分块边界处不会丢失上下文
查询优化
上下文窗口:使用
prev_chunks和next_chunks来检索周围内容结果数量:从 3-5 个结果开始(
n参数),根据精确度需求进行调整阈值:调整
t参数以根据相似度得分过滤结果
高级用法
重新索引
Rememberizer 在向量数量超过预定义阈值时会自动触发重新索引,但在以下情况下请考虑手动重新索引:
上传大量文档
更改嵌入模型
修改索引算法
查询增强
为了获得更好的搜索结果:
具体 搜索查询
包含上下文 如果可能的话
使用自然语言 而不是关键词
根据结果质量 调整参数
从其他向量数据库迁移
如果您当前正在使用其他向量数据库解决方案并希望迁移到 Rememberizer 向量存储,以下指南将帮助您高效地转移数据。
迁移概述
迁移向量数据涉及:
从您的源向量数据库导出数据
将数据转换为与 Rememberizer 兼容的格式
将数据导入到您的 Rememberizer 向量存储中
验证迁移是否成功
迁移到 Rememberizer 的好处
PostgreSQL 基础:建立在成熟的数据库技术上,具有内置的备份和恢复功能
集成生态系统:与其他 Rememberizer 组件的无缝连接
简化管理:统一的向量操作界面
高级安全性:行级安全和细粒度访问控制
可扩展架构:随着数据增长进行性能优化
从 Pinecone 迁移
{% tabs %} {% tab title="Python" %}
{% endtab %}
{% tab title="Node.js" %}
{% endtab %} {% endtabs %}
从 Qdrant 迁移
{% tabs %} {% tab title="Python" %}
{% endtab %}
{% tab title="Node.js" %}
{% endtab %} {% endtabs %}
从 Supabase pgvector 迁移
如果您已经在使用带有 pgvector 的 Supabase,迁移到 Rememberizer 特别简单,因为两者都使用带有 pgvector 扩展的 PostgreSQL。
{% tabs %} {% tab title="Python" %}
{% endtab %}
{% tab title="Node.js" %}
迁移最佳实践
遵循以下建议以确保成功迁移:
提前规划:
估算迁移所需的数据量和时间
在低流量时段安排迁移
在开始大规模迁移之前增加磁盘空间
先进行测试:
在 Rememberizer 中创建一个测试向量存储
迁移一小部分数据(100-1000 个向量)
使用关键查询验证搜索功能
数据验证:
比较迁移前后的文档计数
运行基准查询以确保结果相似
验证元数据是否正确保留
优化性能:
使用批量操作以提高效率
考虑源数据库和目标数据库的地理共址
监控 API 速率限制并相应调整批量大小
迁移后的步骤:
验证在 Rememberizer 中创建索引
更新应用程序配置以指向新的向量存储
在迁移验证之前保留源数据库作为备份
有关详细的 API 参考和端点文档,请访问 向量存储 API 页面。
确保安全处理 API 密钥,并遵循 API 密钥管理的最佳实践。
Last updated