magasin vectorieltemps d'exécution dans msOpensearch1695Postgresql1807Neptune2236S3 magasin vectoriel2284 Aurora Capacity Unit (ACU) 0,12 $ par ACU par heure Type de magasin vecteur Temps de récupérationPrix approximatif par moisS3 Vector2284 ms$3.54Neptune2236 ms$345PostgreSQL1807 ms$86OpenSearch1695 ms$172 À partir du 15 juillet, AWS a ajouté le support pour les magasins vectoriels S3 pour les bases de connaissances Bedrock. 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 gère : Autres : Qu’est-ce que chacun d’eux ? AWS géré : Ouverture de recherche : est une suite de recherche et d'analyse distribuée, gérée par la communauté, sous licence Apache 2.0, 100% open source utilisée pour un large éventail de cas d'utilisation tels que la surveillance des applications en temps réel, l'analyse des journaux et la recherche de sites Web. OpenSearch fournit un système hautement évolutif pour fournir un accès rapide et une réponse à de grands volumes de données avec un outil de visualisation intégré, OpenSearch Dashboards, qui facilite l'exploration de leurs données. OpenSearch est alimenté par la bibliothèque de recherche Apache Lucene, et il prend en charge un certain nombre de capacités de recherche et d'analyse telles que la recherche de voisins proches (KNN), SQL, détection d'anomalie, Machine Learning Commons, Trace Analytics, recherche ouverture ouverture Le 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 est le premier magasin d'objets cloud avec une prise en charge native pour le stockage et la requête de vecteurs, offrant un stockage vectoriel conçu pour les agents d'IA, une déduction d'IA et une recherche sémantique de votre contenu stocké dans Amazon S3. En réduisant les coûts de téléchargement, de stockage et de requête de vecteurs de jusqu'à 90%, S3 Vectors rend rentable la création et l'utilisation de grands ensembles de données vectorielles pour améliorer la mémoire et le contexte des agents d'IA ainsi que les résultats de recherche sémantique de vos données 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 est un service de base de données relationnelle entièrement géré basé sur le cloud qui est compatible avec PostgreSQL. Il combine les performances et la disponibilité des bases de données commerciales haut de gamme avec la simplicité et l'efficacité des bases de données open-source, en particulier PostgreSQL. Amazon Neptune : 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 est un service de base de données graphique rapide, fiable et entièrement géré qui facilite la construction et l'exécution d'applications fonctionnant avec des ensembles de données hautement connectés. And non-AWS managed: MongoDB Atlas: MongoDB Atlas est un service de base de données multi-cloud réalisé par les mêmes personnes qui construisent MongoDB. Atlas simplifie le déploiement et la gestion de vos bases de données tout en offrant la polyvalence dont vous avez besoin pour construire des applications mondiales résilientes et performantes sur les fournisseurs de cloud de votre choix. Pinecone: Pinecone est un service de base de données vectorielle basé sur le cloud conçu pour les applications d'IA, en particulier celles impliquant la génération augmentée par la recherche. Redis Enterprise Cloud: Redis Enterprise Cloud est une offre entièrement gérée, à la demande, de base de données en tant que service (DBaaS) de Redis, construite sur la base de Redis open-source. Maintenant, nous comprenons ce que chacun des magasins pris en charge est.Je vais tester et comparer uniquement les magasins gérés par AWS. J'ai créé une fonction 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 }) } Dans cet exemple, nous utiliserons amazon.nova-micro-v1:0 pour comparer les performances. Cette fonction lambda attend un événement de test au format : { "query": "Can you provide a list of bank holidays employers can have?", "kb_id": "AAUAL8BHQV" } Question - est notre requête à partir de mon fichier exemple de texte. Vous pouvez utiliser n'importe quel fichier texte que vous voulez. kb_id - base de connaissances ID; nous allons créer une base de connaissances de base pour tester Et j’ai créé 4 bases de connaissances différentes en utilisant différentes sources de données : Et enfin, nous avons tout ce dont nous avons besoin pour faire nos tests: Exécutez la fonction lambda et changez uniquement l'ID de la base de connaissances pour le tester correctement. OpenSearch: Neptune: PostgreSQL: S3 Vector store: Et pour un meilleur visuel, ordonné par le temps d'exécution: magasin vectorieltemps d'exécution dans msOpensearch1695Postgresql1807Neptune2236S3 magasin vectoriel2284 Boutique vecteur Temps d'exécution en ms Comme vous pouvez le voir ici, OpenSearch est une solution de stockage plus rapide. Payez comme par 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 L'OCU minimum que vous pouvez payer est de 0,5. Cela signifie 0,24 $ * 24 heures * 30 jours * 2 (indexation, recherche et requête) * 0,5 (OCU minimum) = 172 $. : : PostgreSQL - pay per ACU Aurora Capacity Unit (ACU) 0,12 $ par ACU par heure L'ACU minimum que vous pouvez payer est 0. mais 1 ACU vous coûtera 0,12 $ * 24 heures * 30 jours = 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 L'instance minimale est de 0,48 $ par heure. Cela signifie que par mois, cela vous coûtera 0,48 $ * 24 heures * 30 jours = 345 $. Wow! S3 vector store, here - you will need to pay for requests and storage. S3 Stockage vectoriel /mois - stockage logique mensuel des données vectorielles, des clés et des métadonnées = $0.06 per GB S3 Vectors request pricing Demandes PUT (par GB)* GET, LIST et toutes les autres demandes (par 1000 demandes) Les vecteurs S3 demandent 0,20 $ par GB 0,055 $ *PUT est soumis à une charge minimale de 128KB par PUT. Pour réduire les coûts de PUT, vous pouvez batch plusieurs vecteurs par demande PUT. S3 Vecteurs de recherche de prix S3 Demandes de requêtes vectorielles (pour 1 000 requêtes) $ 0,0025 S3 Données vectorielles - somme des vecteurs par index multipliée par la taille moyenne du vecteur (données vectorielles, clés et métadonnées filtrables) Premiers 100 000 vecteurs 0,0040 $ par TB Plus de 100 000 vecteurs 0,0020 $ par TB Le TLDR : S3 Vectors storage charge ((4 bytes * 1024 dimensions) données vectorielles / vecteur + 1 KB de métadonnées filtrables / vecteur + 1 KB de métadonnées non filtrables / vecteur + 0,17 KB de clé / vecteur) = 6,17 KB de stockage logique par vecteur moyen. 6.17 KB / vecteur moyen * 250 000 vecteurs * 40 indices vectoriels = 59 Go de stockage logique. Coût total de stockage mensuel = 59 GB * $0.06/GB par mois = $3.54 Final comparison table: Type de magasin vecteur Temps de récupérationPrix approximatif par moisS3 Vector2284 ms$3.54Neptune2236 ms$345PostgreSQL1807 ms$86OpenSearch1695 ms$172 Type de vecteur Temps de récupération Prix approximatif par mois Si la vitesse n'est pas si critique, je choisirais le magasin vectoriel S3. Le gagnant évident, sinon, est OpenSearch, qui serait probablement un meilleur choix. Quel magasin vectoriel utilisez-vous dans votre projet?