Bienvenido a la Biblioteca Redis Vector: el mejor cliente de Python diseñado para aplicaciones de IA aprovechando el poder de Redis.
redisvl es tu herramienta de referencia para:
Instale redisvl en su entorno Python (> = 3.8) utilizando pip :
pip install redisvlPara obtener instrucciones más detalladas, visite la guía de instalación.
Elija entre múltiples opciones de implementación de Redis:
docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latestMejore su experiencia y observabilidad con la GUI Redis Insight gratuita.
Diseñe un esquema para su caso de uso que modela su conjunto de datos con redis incorporado y campos indexables ( por ejemplo, texto, etiquetas, numéricos, geo y vectores ). Cargue un esquema desde un archivo YAML:
index :
name : user-idx
prefix : user
storage_type : json
fields :
- name : user
type : tag
- name : credit_score
type : tag
- name : embedding
type : vector
attrs :
algorithm : flat
dims : 4
distance_metric : cosine
datatype : float32 from redisvl . schema import IndexSchema
schema = IndexSchema . from_yaml ( "schemas/schema.yaml" )O cargar directamente desde un diccionario de Python:
schema = IndexSchema . from_dict ({
"index" : {
"name" : "user-idx" ,
"prefix" : "user" ,
"storage_type" : "json"
},
"fields" : [
{ "name" : "user" , "type" : "tag" },
{ "name" : "credit_score" , "type" : "tag" },
{
"name" : "embedding" ,
"type" : "vector" ,
"attrs" : {
"algorithm" : "flat" ,
"datatype" : "float32" ,
"dims" : 4 ,
"distance_metric" : "cosine"
}
}
]
})Cree una clase SearchIndex con un esquema de entrada y una conexión del cliente para realizar operaciones de administración y búsqueda en su índice en Redis:
from redis import Redis
from redisvl . index import SearchIndex
# Establish Redis connection and define index
client = Redis . from_url ( "redis://localhost:6379" )
index = SearchIndex ( schema , client )
# Create the index in Redis
index . create ()Clase de índice de búsqueda de Async Compliating también disponible: AsyncSearchIndex.
Cargue y obtenga datos a/desde su instancia de Redis:
data = { "user" : "john" , "credit_score" : "high" , "embedding" : [ 0.23 , 0.49 , - 0.18 , 0.95 ]}
# load list of dictionaries, specify the "id" field
index . load ([ data ], id_field = "user" )
# fetch by "id"
john = index . fetch ( "john" )Defina consultas y realice búsquedas avanzadas sobre sus índices, incluida la combinación de vectores, filtros de metadatos y más.
VectorQuery: consultas de vectores flexibles con filtros personalizables que habilitan la búsqueda semántica:
from redisvl . query import VectorQuery
query = VectorQuery (
vector = [ 0.16 , - 0.34 , 0.98 , 0.23 ],
vector_field_name = "embedding" ,
num_results = 3
)
# run the vector search query against the embedding field
results = index . query ( query )Incorpore filtros de metadatos complejos en sus consultas:
from redisvl . query . filter import Tag
# define a tag match filter
tag_filter = Tag ( "user" ) == "john"
# update query definition
query . set_filter ( tag_filter )
# execute query
results = index . query ( query )RangeQuery: búsqueda vectorial dentro de una gama definida combinada con filtros personalizables
FilterQuery: búsqueda estándar usando filtros y la búsqueda de texto completo
CountQuery: cuente el número de registros indexados dados atributos
Lea más sobre la construcción de consultas avanzadas de Redis.
Integre con los proveedores de incrustación populares para simplificar en gran medida el proceso de vectorización de datos no estructurados para su índice y consultas:
from redisvl . utils . vectorize import CohereTextVectorizer
# set COHERE_API_KEY in your environment
co = CohereTextVectorizer ()
embedding = co . embed (
text = "What is the capital city of France?" ,
input_type = "search_query"
)
embeddings = co . embed_many (
texts = [ "my document chunk content" , "my other document chunk content" ],
input_type = "search_document"
)Obtenga más información sobre el uso de vectorizadores en sus flujos de trabajo de incrustación.
Integre con los proveedores populares de rehacer para mejorar la relevancia de los resultados de búsqueda iniciales de Redis
Estamos emocionados de anunciar el apoyo a las extensiones redisvl . Estos módulos implementan interfaces que exponen las mejores prácticas y patrones de diseño para trabajar con la memoria y los agentes de LLM. Hemos tomado lo mejor de lo que hemos aprendido de nuestros usuarios (ese es usted), así como a los clientes de vanguardia, y lo empacamos.
¿Tiene una idea para otra extensión? Abra un PR o comuníquese con nosotros a [email protected]. Siempre estamos abiertos a los comentarios.
Aumente el rendimiento de la aplicación y reduzca el costo de usar modelos LLM en la producción aprovechando el conocimiento previamente generado con SemanticCache .
from redisvl . extensions . llmcache import SemanticCache
# init cache with TTL and semantic distance threshold
llmcache = SemanticCache (
name = "llmcache" ,
ttl = 360 ,
redis_url = "redis://localhost:6379" ,
distance_threshold = 0.1
)
# store user queries and LLM responses in the semantic cache
llmcache . store (
prompt = "What is the capital city of France?" ,
response = "Paris"
)
# quickly check the cache with a slightly different prompt (before invoking an LLM)
response = llmcache . check ( prompt = "What is France's capital city?" )
print ( response [ 0 ][ "response" ]) >>> Paris
Obtenga más información sobre el almacenamiento en caché semántico para LLM.
Mejorar la personalización y la precisión de las respuestas de LLM proporcionando el historial de chat de los usuarios como contexto. Administre el acceso a los datos de la sesión utilizando la recancia o relevancia, alimentada por la búsqueda de vectores con el SemanticSessionManager .
from redisvl . extensions . session_manager import SemanticSessionManager
session = SemanticSessionManager (
name = "my-session" ,
redis_url = "redis://localhost:6379" ,
distance_threshold = 0.7
)
session . add_messages ([
{ "role" : "user" , "content" : "hello, how are you?" },
{ "role" : "assistant" , "content" : "I'm doing fine, thanks." },
{ "role" : "user" , "content" : "what is the weather going to be today?" },
{ "role" : "assistant" , "content" : "I don't know" }
])Obtenga un historial de chat reciente:
session . get_recent ( top_k = 1 ) >>> [{"role": "assistant", "content": "I don't know"}]
Obtenga un historial de chat relevante (alimentado por la búsqueda de vector):
session . get_relevant ( "weather" , top_k = 1 ) >>> [{"role": "user", "content": "what is the weather going to be today?"}]
Obtenga más información sobre la gestión de sesiones de LLM.
Cree modelos de decisión rápida que funcionen directamente en Redis y enruten consultas de los usuarios a la "ruta" o "tema" más cercana.
from redisvl . extensions . router import Route , SemanticRouter
routes = [
Route (
name = "greeting" ,
references = [ "hello" , "hi" ],
metadata = { "type" : "greeting" },
distance_threshold = 0.3 ,
),
Route (
name = "farewell" ,
references = [ "bye" , "goodbye" ],
metadata = { "type" : "farewell" },
distance_threshold = 0.3 ,
),
]
# build semantic router from routes
router = SemanticRouter (
name = "topic-router" ,
routes = routes ,
redis_url = "redis://localhost:6379" ,
)
router ( "Hi, good morning" ) >>> RouteMatch(name='greeting', distance=0.273891836405)
Obtenga más información sobre el enrutamiento semántico.
Cree, destruya y administre configuraciones de índice Redis desde una interfaz CLI especialmente diseñada: rvl .
$ rvl -h
usage: rvl < command > [ < args > ]
Commands:
index Index manipulation (create, delete, etc.)
version Obtain the version of RedisVL
stats Obtain statistics about an indexLea más sobre el uso de la CLI.
En la era de Genai, las bases de datos de vectores y los LLM están transformando sistemas de recuperación de información. Con marcos emergentes y populares como Langchain y Llamaindex, la innovación es rápida. Sin embargo, muchas organizaciones enfrentan el desafío de ofrecer soluciones de IA rápidamente y a escala .
Ingrese Redis: una piedra angular del mundo NoSQL, reconocida por sus versátiles estructuras de datos y motores de procesamiento. Redis sobresale en cargas de trabajo en tiempo real como almacenamiento en caché, gestión de sesiones y búsqueda. También es una potencia como una base de datos vectorial para RAG, un caché LLM y una tienda de memoria de la sesión de chat para la IA conversacional.
La Biblioteca Vector de Redis une la brecha entre el ecosistema de desarrollador-nativo de AI y las capacidades robustas de Redis. Con una interfaz liviana, elegante e intuitiva, RedisVL facilita el aprovechamiento de la potencia de Redis. Construido en el cliente Redis Python, redisvl transforma las características de Redis en una gramática perfectamente alineada con las necesidades de los ingenieros y científicos de datos de AI/ML de hoy.
Para obtener ayuda adicional, consulte los siguientes recursos:
Ayúdanos contribuyendo con PRS, abriendo problemas de GitHub para errores o nuevas ideas de características, mejorando la documentación o aumentando la cobertura de prueba. ¡Lea más sobre cómo contribuir!
Este proyecto es apoyado por Redis, Inc sobre una base de buena fe. Para informar los errores, las funciones de solicitud o recibir asistencia, presenten un problema.