Bem -vindo à Biblioteca Vector Redis - o cliente Python Ultimate projetado para aplicativos de IA aproveitando o poder dos Redis.
Redisvl é sua ferramenta para:
Instale redisvl no seu ambiente Python (> = 3.8) usando pip :
pip install redisvlPara obter instruções mais detalhadas, visite o guia de instalação.
Escolha entre várias opções de implantação Redis:
docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latestAprimore sua experiência e observabilidade com a GUI gratuita do Redis Insight.
Projete um esquema para o seu caso de uso que modela seu conjunto de dados com campos redis e indexíveis ( por exemplo, texto, tags, numéricos, geo e vetores ). Carregue um esquema de um arquivo 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" )Ou carregar diretamente de um dicionário 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"
}
}
]
})Crie uma classe SearchIndex com um esquema de entrada e conexão com o cliente para executar operações de administração e pesquisa em seu índice em 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 ()Classe de índice de pesquisa em conformidade com assíncrona também disponível: asyncsearchIndex.
Carregue e busque dados de/para sua instância 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 e execute pesquisas avançadas sobre seus índices, incluindo a combinação de vetores, filtros de metadados e muito mais.
VectorQuery - Consultas vetoriais flexíveis com filtros personalizáveis que permitem pesquisa 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 complexos de metadados em suas 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 - Pesquisa vetorial dentro de um intervalo definido emparelhado com filtros personalizáveis
FilterQuery - Pesquisa padrão usando filtros e a pesquisa de texto completo
CountQuery - Conte o número de registros indexados dados atributos
Leia mais sobre a construção de consultas avançadas do Redis.
Integre -se aos provedores de incorporação populares para simplificar bastante o processo de vetorização de dados não estruturados para o seu índice e 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"
)Saiba mais sobre o uso de vetorizadores em seus fluxos de trabalho de incorporação.
Integrar -se aos provedores de re -senha populares para melhorar a relevância dos resultados iniciais da pesquisa da Redis
Estamos empolgados em anunciar o suporte para extensões Redisvl . Esses módulos implementam interfaces que expojam as melhores práticas e padrões de design para trabalhar com a memória e os agentes LLM. Tomamos o melhor do que aprendemos com nossos usuários (é você), bem como com clientes de ponta e empacotamos.
Tem uma ideia para outra extensão? Abra um PR ou entre em contato conosco pelo [email protected]. Estamos sempre abertos a feedback.
Aumente a taxa de transferência de aplicação e reduza o custo do uso de modelos LLM na produção, alavancando o conhecimento gerado anteriormente com o 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
Saiba mais sobre o cache semântico para o LLMS.
Melhore a personalização e a precisão das respostas do LLM, fornecendo histórico de bate -papo do usuário como contexto. Gerencie o acesso aos dados da sessão usando a Recência ou Relevância, alimentada pela pesquisa vetorial com o 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" }
])Obtenha histórico de bate -papo recente:
session . get_recent ( top_k = 1 ) >>> [{"role": "assistant", "content": "I don't know"}]
Obtenha histórico de bate -papo relevante (alimentado pela pesquisa de vetores):
session . get_relevant ( "weather" , top_k = 1 ) >>> [{"role": "user", "content": "what is the weather going to be today?"}]
Saiba mais sobre o gerenciamento de sessões da LLM.
Crie modelos de decisão rápida que são executados diretamente em redis e rotear as consultas do usuário para a "rota" ou "tópico" mais próxima.
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)
Saiba mais sobre o roteamento semântico.
Crie, destrua e gerencie as configurações do Redis Index a partir de uma interface CLI criada para fins específicos: 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 indexLeia mais sobre o uso da CLI.
Na era de Genai, bancos de dados de vetores e LLMs estão transformando sistemas de recuperação de informações. Com estruturas emergentes e populares como Langchain e Llamaindex, a inovação é rápida. No entanto, muitas organizações enfrentam o desafio de fornecer soluções de IA rapidamente e em escala .
Entre Redis - Uma pedra angular do mundo NoSQL, conhecido por suas versáteis estruturas de dados e mecanismos de processamento. Redis se destaca em cargas de trabalho em tempo real, como cache, gerenciamento de sessões e pesquisa. É também uma potência como um banco de dados vetorial para RAG, um cache LLM e uma loja de memória de sessão de bate -papo para a IA conversacional.
A Biblioteca Vector Redis preenche a lacuna entre o ecossistema de desenvolvedores nativos da AI e os recursos robustos da Redis. Com uma interface leve, elegante e intuitiva, o Redisvl facilita a aproveitando o poder de Redis. Construído no cliente Redis Python, redisvl transforma os recursos da Redis em uma gramática perfeitamente alinhada com as necessidades dos engenheiros de AI/ML de hoje e cientistas de dados.
Para obter ajuda adicional, consulte os seguintes recursos:
Ajude -nos contribuindo com o PRS, abrindo problemas do GitHub para bugs ou novas idéias de recursos, melhorando a documentação ou aumentando a cobertura do teste. Leia mais sobre como contribuir!
Este projeto é apoiado pela Redis, Inc, com uma base de esforço de boa fé. Para relatar bugs, solicitar recursos ou receber assistência, registre um problema.