in

La búsqueda de vectores para Amazon MemoryDB ya está disponible de forma general | Amazon Web Services

Hoy, anunciamos la disponibilidad general de la búsqueda de vectores para Amazon MemoryDB, una nueva capacidad que puede usar para almacenar, indexar, recuperar y buscar vectores para desarrollar aplicaciones de aprendizaje automático (ML) en tiempo real e inteligencia artificial generativa (IA generativa) con rendimiento en memoria y durabilidad multi-AZ.

Con este lanzamiento, Amazon MemoryDB ofrece el rendimiento de búsqueda de vectores más rápido con las tasas de recuperación más altas entre las bases de datos de vectores más populares en Amazon Web Services (AWS). Ya no es necesario hacer concesiones en cuanto a rendimiento, recuperación y latencia, que tradicionalmente están en conflicto entre sí.

Ahora puede utilizar una base de datos MemoryDB para almacenar los datos de su aplicación y millones de vectores con tiempos de respuesta de consultas y actualizaciones de un solo dígito en milisegundos con los niveles más altos de recuperación. Esto simplifica la arquitectura de su aplicación de IA generativa, al mismo tiempo que ofrece un rendimiento máximo y reduce los costos de licencia, la carga operativa y el tiempo para brindar información sobre sus datos.

Con la búsqueda vectorial para Amazon MemoryDB, puede utilizar la API de MemoryDB existente para implementar casos de uso de IA generativa, como la generación aumentada de recuperación (RAG), la detección de anomalías (fraude), la recuperación de documentos y los motores de recomendación en tiempo real. También puede generar incrustaciones vectoriales mediante servicios de inteligencia artificial y aprendizaje automático (IA/ML) como Amazon Bedrock y Amazon SageMaker y almacenarlas en MemoryDB.

¿Qué casos de uso se beneficiarían más de la búsqueda vectorial para MemoryDB?
Puede utilizar la búsqueda vectorial para MemoryDB para los siguientes casos de uso específicos:

1. Búsqueda semántica en tiempo real para generación aumentada de recuperación (RAG)
Puede utilizar la búsqueda vectorial para recuperar pasajes relevantes de un gran corpus de datos para ampliar un modelo de lenguaje grande (LLM). Esto se hace tomando su corpus de documentos, dividiéndolos en grupos discretos de textos y generando incrustaciones vectoriales para cada fragmento con modelos de incrustación como el modelo Amazon Titan Multimodal Embeddings G1, y luego cargando estas incrustaciones vectoriales en Amazon MemoryDB.

Con RAG y MemoryDB, puede crear aplicaciones de inteligencia artificial generativa en tiempo real para encontrar productos o contenidos similares representando elementos como vectores, o puede buscar documentos representando documentos de texto como vectores densos que capturan el significado semántico.

2. Almacenamiento en caché semántico duradero y de baja latencia
El almacenamiento en caché semántico es un proceso que permite reducir los costos computacionales mediante el almacenamiento en memoria de resultados anteriores del modelo de base (FM). Puede almacenar respuestas inferidas anteriores junto con la representación vectorial de la pregunta en MemoryDB y reutilizarlas en lugar de inferir otra respuesta del LLM.

Si la consulta de un usuario es semánticamente similar a una pregunta anterior según un puntaje de similitud definido, MemoryDB devolverá la respuesta a la pregunta anterior. Este caso de uso permitirá que su aplicación de IA generativa responda más rápido con menores costos al realizar una nueva solicitud al FM y brindará una experiencia de usuario más rápida para sus clientes.

3. Detección de anomalías (fraudes) en tiempo real
Puede utilizar la búsqueda vectorial para la detección de anomalías (fraude) para complementar sus procesos de ML basados ​​en reglas y por lotes almacenando datos transaccionales representados por vectores, junto con metadatos que representan si esas transacciones se identificaron como fraudulentas o válidas.

Los procesos de aprendizaje automático pueden detectar transacciones fraudulentas de los usuarios cuando las nuevas transacciones netas tienen una gran similitud con vectores que representan transacciones fraudulentas. Con la búsqueda de vectores para MemoryDB, puede detectar fraudes mediante el modelado de transacciones fraudulentas en función de sus modelos de aprendizaje automático por lotes y, luego, cargar transacciones normales y fraudulentas en MemoryDB para generar sus representaciones vectoriales a través de técnicas de descomposición estadística, como el análisis de componentes principales (PCA).

A medida que las transacciones entrantes fluyen a través de su aplicación front-end, puede ejecutar una búsqueda vectorial en MemoryDB generando la representación vectorial de la transacción a través de PCA, y si la transacción es muy similar a una transacción fraudulenta detectada anteriormente, puede rechazar la transacción en milisegundos de un solo dígito para minimizar el riesgo de fraude.

Introducción a la búsqueda de vectores para Amazon MemoryDB
Vea cómo implementar una aplicación de búsqueda semántica simple utilizando la búsqueda vectorial para MemoryDB.

Paso 1. Crear un clúster para respaldar la búsqueda de vectores
Puede crear un clúster de MemoryDB para habilitar la búsqueda de vectores dentro de la consola de MemoryDB. Elija Habilitar búsqueda de vectores en el Configuración del clúster Cuando crea o actualiza un clúster, la búsqueda vectorial está disponible para la versión 7.1 de MemoryDB y una configuración de fragmento único.

Paso 2. Cree incrustaciones vectoriales utilizando el modelo Amazon Titan Embeddings
Puede utilizar Amazon Titan Text Embeddings u otros modelos de incrustación para crear incrustaciones vectoriales, que están disponibles en Amazon Bedrock. Puede cargar su archivo PDF, dividir el texto en fragmentos y obtener datos vectoriales mediante una única API con Bibliotecas LangChain Integrado con los servicios de AWS.

import redis
import numpy as np
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import BedrockEmbeddings

# Load a PDF file and split document
loader = PyPDFLoader(file_path=pdf_path)
        pages = loader.load_and_split()
        text_splitter = RecursiveCharacterTextSplitter(
            separators=["\n\n", "\n", ".", " "],
            chunk_size=1000,
            chunk_overlap=200,
        )
        chunks = loader.load_and_split(text_splitter)

# Create MemoryDB vector store the chunks and embedding details
client = RedisCluster(
        host=" mycluster.memorydb.us-east-1.amazonaws.com",
        port=6379,
        ssl=True,
        ssl_cert_reqs="none",
        decode_responses=True,
    )

embedding =  BedrockEmbeddings (
           region_name="us-east-1",
 endpoint_url=" https://bedrock-runtime.us-east-1.amazonaws.com",
    )

#Save embedding and metadata using hset into your MemoryDB cluster
for id, dd in enumerate(chucks*):
     y = embeddings.embed_documents([dd])
     j = np.array(y, dtype=np.float32).tobytes()
     client.hset(f'oakDoc:{id}', mapping={'embed': j, 'text': chunks[id] } )

Una vez que genere las incrustaciones vectoriales utilizando el modelo Amazon Titan Text Embeddings, puede conectarse a su clúster MemoryDB y guardar estas incrustaciones utilizando MemoryDB HSET dominio.

Paso 3. Crear un índice vectorial
Para consultar sus datos vectoriales, cree un índice vectorial utilizando elFT.CREATE Los índices vectoriales también se construyen y mantienen en un subconjunto del espacio de claves de MemoryDB. Los vectores se pueden guardar en tipos de datos JSON o HASH, y cualquier modificación de los datos vectoriales se actualiza automáticamente en un espacio de claves del índice vectorial.

from redis.commands.search.field import TextField, VectorField

index = client.ft(idx:testIndex).create_index([
        VectorField(
            "embed",
            "FLAT",
            {
                "TYPE": "FLOAT32",
                "DIM": 1536,
                "DISTANCE_METRIC": "COSINE",
            }
        ),
        TextField("text")
        ]
    )

En MemoryDB, puede utilizar cuatro tipos de campos: campos numéricos, campos de etiqueta, campos de texto y campos vectoriales. Los campos vectoriales admiten la búsqueda de K-nearest neighbor (KNN) de vectores de tamaño fijo mediante el algoritmo de búsqueda plana (FLAT) y el algoritmo de mundos pequeños navegables jerárquicos (HNSW). La función admite varias métricas de distancia, como la euclidiana, el coseno y el producto interno. Utilizaremos la distancia euclidiana, una medida de la distancia angular entre dos puntos en el espacio vectorial. Cuanto menor sea la distancia euclidiana, más cerca estarán los vectores entre sí.

Paso 4. Busca en el espacio vectorial
Puedes usar FT.SEARCH y FT.AGGREGATE Comandos para consultar sus datos vectoriales. Cada operador utiliza un campo en el índice para identificar un subconjunto de las claves en el índice. Puede consultar y encontrar resultados filtrados por la distancia entre un campo vectorial en MemoryDB y un vector de consulta basado en un umbral predefinido (RADIUS).

from redis.commands.search.query import Query

# Query vector data
query = (
    Query("@vector:[VECTOR_RANGE $radius $vec]=>{$YIELD_DISTANCE_AS: score}")
     .paging(0, 3)
     .sort_by("vector score")
     .return_fields("id", "score")     
     .dialect(2)
)

# Find all vectors within 0.8 of the query vector
query_params = {
    "radius": 0.8,
    "vec": np.random.rand(VECTOR_DIMENSIONS).astype(np.float32).tobytes()
}

results = client.ft(index).search(query, query_params).docs

Por ejemplo, cuando se utiliza la similitud de coseno, la RADIUS El valor varía de 0 a 1, donde un valor más cercano a 1 significa encontrar vectores más similares al centro de búsqueda.

A continuación se muestra un resultado de ejemplo para encontrar todos los vectores dentro de 0,8 del vector de consulta.

[Document {'id': 'doc:a', 'payload': None, 'score': '0.243115246296'},
 Document {'id': 'doc:c', 'payload': None, 'score': '0.24981123209'},
 Document {'id': 'doc:b', 'payload': None, 'score': '0.251443207264'}]

Para obtener más información, puede consultar un Ejemplo de aplicación de IA generativa usando RAG con MemoryDB como almacén vectorial.

Novedades en GA
En re:Invent 2023, lanzamos la búsqueda vectorial para MemoryDB en versión preliminar. Según los comentarios de los clientes, estas son las nuevas funciones y mejoras que ya están disponibles:

  • VECTOR_RANGE para permitir que MemoryDB funcione como un caché semántico duradero de baja latencia, lo que permite la optimización de costos y mejoras de rendimiento para sus aplicaciones de IA generativa.
  • SCORE para filtrar mejor la similitud al realizar una búsqueda vectorial.
  • Memoria compartida para no duplicar vectores en la memoria. Los vectores se almacenan dentro del espacio de claves de MemoryDB y los punteros a los vectores se almacenan en el índice del vector.
  • Mejoras de rendimiento a altas tasas de filtrado para potenciar las aplicaciones de IA generativa con mayor rendimiento.

Ya disponible
La búsqueda vectorial está disponible en todas las regiones en las que MemoryDB está disponible actualmente. Obtenga más información sobre la búsqueda vectorial para Amazon MemoryDB en la documentación de AWS.

Pruébelo en la consola MemoryDB y envíe comentarios al AWS re:Post para Amazon MemoryDB o a través de sus contactos habituales de soporte de AWS.

Channy



Fuente

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

GIPHY App Key not set. Please check settings

Reseña de Beats Pill: un altavoz realmente bueno que es una actualización de firmware de lo que era

Infografía que muestra la cadena típica de ataque de ransomware.

Cisco Talos: principales tácticas y técnicas de ransomware expuestas