矢量存储 运行时间在 msOpensearch1695Postgresql1807Neptune2236S3 矢量存储2284 Aurora 容量单位 (ACU) 每小时 0.12 美元 ACU 矢量商店类型 检索时间 每月约价S3 矢量2284 ms$3.54 尼普丁2236 ms$345 邮件SQL1807 ms$86 打开搜索1695 ms$172 从 7 月 15 日开始,AWS 已为 Bedrock 知识库添加了对 S3 矢量商店的支持,目前它支持多个商店: AWS managed: Others: OpenSearch MongoDB Atlas S3 vector store Pinecone PostgreSQL Redis Enterprise Cloud Neptune AWS managed: Others: OpenSearch MongoDB Atlas S3 vector store Pinecone PostgreSQL Redis Enterprise Cloud Neptune AWS 管理: 其他人: 什么是每一个? AWS 管理: 开放式搜索: 是一个分布式的,社区驱动的,Apache 2.0授权的,100%开源搜索和分析套件,用于广泛的用例,如实时应用程序监控,日志分析和网站搜索。OpenSearch提供了一个高度可扩展的系统,以提供快速访问和响应的大量数据,一个集成的可视化工具,OpenSearch仪表板,使用户容易地探索他们的数据。OpenSearch由Apache Lucene搜索库提供,它支持一系列的搜索和分析功能,如KNN搜索,SQL,异常检测,机器学习共同体,跟踪分析,全文本搜索等。 开放式 开放式 S3 Vector 商店: Amazon S3 Vectors is the first cloud object store with native support to store and query vectors, delivering purpose-built, cost-optimized vector storage for AI agents, AI inference, and semantic search of your content stored in Amazon S3. By reducing the cost of uploading, storing, and querying vectors by up to 90%, S3 Vectors makes it cost-effective to create and use large vector datasets to improve the memory and context of AI agents as well as semantic search results of your S3 data. Amazon S3 Vectors 是第一个在 Amazon S3 中存储、存储和查询 vector 的本地支持的云对象商店,为 AI 代理商、AI 推理和存储在 Amazon S3 中的内容进行语义搜索提供专用、成本优化的 vector 存储,从而降低了上传、存储和查询 vector 的成本高达 90% ,S3 Vectors 使创建和使用大型 vector 数据集以提高 AI 代理商的内存和背景以及 S3 数据的语义搜索结果更具成本效益。 使用 AWS Aurora PostgreSQL: Amazon Aurora PostgreSQL is a cloud-based, fully managed relational database service that is compatible with PostgreSQL. It combines the performance and availability of high-end commercial databases with the simplicity and cost-effectiveness of open-source databases, specifically PostgreSQL. Essentially, it's a PostgreSQL-compatible database offered as a service by Amazon Web Services Amazon Aurora PostgreSQL 是一个基于云的,完全管理的关系数据库服务,兼容 PostgreSQL. 它将高端商业数据库的性能和可用性与开源数据库的简单性和成本效益相结合,特别是 PostgreSQL。 亚马逊海王星: Amazon Neptune is a fast, reliable, fully managed graph database service that makes it easy to build and run applications that work with highly connected datasets Amazon Neptune 是一个快速、可靠、完全管理的图形数据库服务,可轻松构建和运行与高度连接的数据集工作的应用程序。 And non-AWS managed: MongoDB Atlas: MongoDB Atlas 是一项由构建 MongoDB 的同一用户提供的多云数据库服务,它简化了部署和管理您的数据库,同时提供您在您选择的云提供商上构建可靠和高性能的全球应用程序所需的多功能性。 Pinecone: Pinecone是一个基于云的矢量数据库服务,专为人工智能应用程序而设计,特别是涉及检索增加的生成。 Redis Enterprise Cloud: Redis Enterprise Cloud 是由 Redis 提供的完全管理、按需、数据库为服务(DBaaS)服务,建立在开源 Redis 的基础之上。 现在,我们了解每个受支持的商店是什么,我将测试并比较只有 AWS 管理的商店。 我创建了 Python lambda 函数。 import json import time import boto3 def lambda_handler(event, context): """Demo: Bedrock Nova Micro with Knowledge Base timing comparison""" # Configuration - easily change these for testing MODEL_ID = "amazon.nova-micro-v1:0" # Allow override for comparison KNOWLEDGE_BASE_ID = event.get('kb_id') # Initialize clients bedrock_runtime = boto3.client('bedrock-runtime') bedrock_agent_runtime = boto3.client('bedrock-agent-runtime') query = event.get( 'query', 'Can you provide a list of bank holidays employers can have?') start_time = time.time() try: # 1. Retrieve from Knowledge Base kb_start = time.time() kb_response = bedrock_agent_runtime.retrieve( knowledgeBaseId=KNOWLEDGE_BASE_ID, retrievalQuery={'text': query}, retrievalConfiguration={ 'vectorSearchConfiguration': {'numberOfResults': 3}} ) kb_time = time.time() - kb_start # 2. Build context and prompt context = "\n".join([r['content']['text'] for r in kb_response.get('retrievalResults', [])]) prompt = f"Context: {context}\n\nQuestion: {query}\n\nAnswer:" # 3. Call Bedrock model model_start = time.time() response = bedrock_runtime.converse( modelId=MODEL_ID, messages=[{"role": "user", "content": [{"text": prompt}]}], inferenceConfig={"maxTokens": 500, "temperature": 0.7} ) model_time = time.time() - model_start total_time = time.time() - start_time answer = response['output']['message']['content'][0]['text'] return { 'statusCode': 200, 'body': json.dumps({ 'kb_id': KNOWLEDGE_BASE_ID, 'query': query, 'answer': answer, 'timing_ms': { 'kb_retrieval': round(kb_time * 1000), 'model_inference': round(model_time * 1000), 'total': round(total_time * 1000) }, 'chunks_found': len(kb_response.get('retrievalResults', [])) }) } except Exception as e: return { 'statusCode': 500, 'body': json.dumps({ 'error': str(e), 'kb_id': KNOWLEDGE_BASE_ID }) } 在本示例中,我们将使用 amazon.nova-micro-v1:0 基石模型来比较性能。 此 lambda 函数预计在格式中的测试事件: { "query": "Can you provide a list of bank holidays employers can have?", "kb_id": "AAUAL8BHQV" } 查询 - 是我们的查询从我的文本示例文件. 你可以使用任何你想要的文本文件。 kb_id - 知识库ID;我们将创建一个基石知识库来测试 我使用不同的数据源创建了4个不同的知识库: 最后,我们有我们需要做测试的一切: 让我们运行 lambda 函数并只更改知识库 ID 来正确测试它。 OpenSearch: Neptune: PostgreSQL: S3 Vector store: 为了更好的视觉,按执行时间排序: 矢量存储 运行时间在 msOpensearch1695Postgresql1807Neptune2236S3 矢量存储2284 矢量商店 执行时间为MS 正如你可以看到的,OpenSearch是一个更快的存储解决方案,但成本如何? 按OCU付款。 OpenSearch OpenSearch Compute Unit (OCU) - Indexing $0.24 per OCU per hour OpenSearch Compute Unit (OCU) - Search and Query $0.24 per OCU per hour OpenSearch Compute Unit (OCU) - Indexing $0.24 per OCU per hour OpenSearch Compute Unit (OCU) - Search and Query $0.24 per OCU per hour 您可以支付的最低OCU为0.5;这意味着0.24美元 * 24小时 * 30天 * 2(索引,搜索和查询) * 0.5(最低OCU) = $172. : : PostgreSQL - pay per ACU Aurora 容量单位 (ACU) 每小时 0.12 美元 ACU 您可以支付的最低ACU为0个,但1个ACU将花费您0.12美元 * 24小时 * 30天 = $86 : Neptune Memory-optimized Neptune Capacity Units configuration Cost 16 m-NCUs $0.48 per hour 32 m-NCUs $0.96 per hour 64 m-NCUs $1.92 per hour 128 m-NCUs $3.84 per hour 256 m-NCUs $7.68 per hour 384 m-NCUs $11.52 per hour Memory-optimized Neptune Capacity Units configuration Cost 16 m-NCUs $0.48 per hour 32 m-NCUs $0.96 per hour 64 m-NCUs $1.92 per hour 128 m-NCUs $3.84 per hour 256 m-NCUs $7.68 per hour 384 m-NCUs $11.52 per hour 最小例子是每小时0.48 美元,这意味着每月它会花费你0.48 美元 * 24 小时 * 30 天 = 345 美元。 S3 vector store, here - you will need to pay for requests and storage. S3 矢量存储 / 月 - 矢量数据、密钥和元数据的每月逻辑存储 = $0.06 per GB S3 Vectors request pricing PUT请求(每 GB)* GET、LIST 和所有其他请求(每 1000 个请求) S3 矢量要求每 GB $0.20 $0.055 *PUT 的最低收费为 128KB 每 PUT. 若要降低 PUT 成本,您可以分批每个 PUT 请求的多个矢量。 S3 矢量查询价格 S3 矢量查询请求(每 1000 个请求) $0.0025 S3 矢量数据 - 每个索引的矢量总和,以平均矢量大小的倍数(矢量数据,密钥和可过滤的元数据) 第一百万个 vector 每TB $0.0040 超过 100 千个矢量 $0.0020 每 TB TLDR 的: S3 Vectors storage charge ((4 字节 * 1024 维度) 矢量数据 / 矢量 + 1 KB 可过滤的元数据 / 矢量 + 1 KB 不可过滤的元数据 / 矢量 + 0.17 KB 键 / 矢量) = 6.17 KB 逻辑存储量 / 平均矢量。 6.17 KB/平均矢量 * 250,000 矢量 * 40 矢量索引 = 59 GB 逻辑存储空间。 每月总存储成本 = 59 GB * $0.06/GB 每月 = $3.54 Final comparison table: 矢量商店类型 检索时间 每月约价S3 矢量2284 ms$3.54 尼普丁2236 ms$345 邮件SQL1807 ms$86 打开搜索1695 ms$172 矢量商店类型 回收时间 每月大约价格 如果速度不那么关键,我会选择S3矢量商店,否则,显而易见的赢家是OpenSearch,这可能是一个更好的选择。 您在项目中使用哪个矢量商店?