Willkommen in der Redis Vector Library - dem ultimativen Python -Kunden, der für KI -Anwendungen entwickelt wurde, die die Kraft von Redis nutzen.
redisvl ist Ihr Werkzeug für:
Installieren Sie redisvl in Ihrer Umgebung mit Python (> = 3.8) mit pip :
pip install redisvlAusführlichere Anweisungen finden Sie im Installationshandbuch.
Wählen Sie aus mehreren Redis -Bereitstellungsoptionen:
docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latestVerbessern Sie Ihre Erfahrung und Beobachtbarkeit mit der kostenlosen Redis Insight -GUI.
Entwerfen Sie ein Schema für Ihren Anwendungsfall, in dem Ihr Datensatz mit integrierten Redis- und indexierbaren Feldern ( z. B. Text, Tags, Numerics, GEO und Vektoren ) modelliert wird. Laden Sie ein Schema aus einer YAML -Datei:
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" )Oder direkt aus einem Python -Wörterbuch laden:
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"
}
}
]
})Erstellen Sie eine SearchIndex -Klasse mit einem Eingabeschema und einer Client -Verbindung, um Administrator- und Suchvorgänge in Ihrem Index in Redis auszuführen:
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 ()ASYNC CHOMPLIABE SEECK INDEX -Klasse auch verfügbar: AsyncSearchIndex.
Laden und holen Sie Daten zu/von Ihrer Redis -Instanz:
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" )Definieren Sie Abfragen und führen Sie fortgeschrittene Suchanfragen über Ihre Indizes durch, einschließlich der Kombination von Vektoren, Metadatenfiltern und vielem mehr.
VectorQuery - Flexible Vektorabfragen mit anpassbaren Filtern, die semantische Suche ermöglichen:
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 )Integrieren Sie komplexe Metadatenfilter an Ihren Anfragen:
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 - Vektorsuche in einem definierten Bereich gepaart mit anpassbaren Filtern
FilterQuery - Standardsuche mit Filtern und der Volltext -Suche
CountQuery - Zählen Sie die Anzahl der indexierten Datensätze angegebene Attribute
Lesen Sie mehr über den Aufbau fortgeschrittener Redis -Abfragen.
Integrieren Sie sich in beliebte Einbettungsanbieter, um den Prozess der vektorisierenden unstrukturierten Daten für Ihren Index und Abfragen erheblich zu vereinfachen:
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"
)Erfahren Sie mehr über die Verwendung von Vektorisierern in Ihren Einbettungsworkflows.
Integrieren Sie sich in die beliebten Umleberanbieter, um die Relevanz der ersten Suchergebnisse von Redis zu verbessern
Wir freuen uns, die Unterstützung für Redisvl -Erweiterungen bekannt zu geben. Diese Module implementieren Schnittstellen, die Best Practices und Entwurfsmuster für die Arbeit mit LLM -Speicher und Agenten aussetzen. Wir haben das Beste aus dem genommen, was wir von unseren Benutzern (das sind Sie) sowie von Kunden von Blutungen gelernt und es verpackt haben.
Haben Sie eine Idee für eine andere Erweiterung? Öffnen Sie eine PR oder wenden Sie sich an [email protected]. Wir sind immer offen für Feedback.
Erhöhen Sie den Anwendungsdurchsatz und senken Sie die Kosten für die Verwendung von LLM -Modellen in der Produktion, indem zuvor generiertes Wissen mit dem SemanticCache eingesetzt wird.
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
Erfahren Sie mehr über Semantic Caching für LLMs.
Verbessern Sie die Personalisierung und Genauigkeit von LLM -Antworten, indem Sie den Benutzer -Chat -Verlauf als Kontext bereitstellen. Verwalten Sie den Zugriff auf die Sitzungsdaten mithilfe von Akten oder Relevanz, die von der Vektorsuche mit dem SemanticSessionManager betrieben werden.
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" }
])Erhalten Sie die jüngste Chat -Geschichte:
session . get_recent ( top_k = 1 ) >>> [{"role": "assistant", "content": "I don't know"}]
Erhalten Sie einen relevanten Chat -Historie (betrieben von Vektorsuche):
session . get_relevant ( "weather" , top_k = 1 ) >>> [{"role": "user", "content": "what is the weather going to be today?"}]
Erfahren Sie mehr über LLM Session Management.
Erstellen Sie schnelle Entscheidungsmodelle, die direkt in Redis- und Routenanfragen zur nächsten "Route" oder "Thema" ausgeführt werden.
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)
Erfahren Sie mehr über das semantische Routing.
Erstellen, zerstören und verwalten Redis-Indexkonfigurationen von einer speziell gebauten CLI-Schnittstelle: 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 indexLesen Sie mehr über die Verwendung der CLI.
Im Zeitalter von Genai transformieren Vektordatenbanken und LLMs Informationsabrufsysteme. Mit aufstrebenden und beliebten Rahmenbedingungen wie Langchain und Llamaindex ist Innovation schnell. Viele Organisationen stehen jedoch vor der Herausforderung, KI -Lösungen schnell und in Maßstab zu liefern.
Geben Sie Redis ein - einen Eckpfeiler der NoSQL -Welt, der für ihre vielseitigen Datenstrukturen und Verarbeitungsmotoren bekannt ist. Redis zeichnet sich in Echtzeit-Workloads wie Caching, Sitzungsmanagement und Suche aus. Es ist auch ein Kraftpaket als Vektordatenbank für RAG, einen LLM -Cache und ein Chat -Sitzungsspeicher für die Konversations -KI.
Die Redis Vector Library überbrückt die Lücke zwischen dem AI-nativen Entwickler-Ökosystem und den robusten Fähigkeiten von Redis. Mit einer leichten, eleganten und intuitiven Oberfläche erleichtert REDISVL die Leistung von Redis einfach. redisvl basiert auf dem Redis Python -Kunden und verwandelt die Funktionen von Redis in eine Grammatik, die perfekt auf die Bedürfnisse der heutigen KI/ML -Ingenieure und Datenwissenschaftler ausgerichtet ist.
Für zusätzliche Hilfe finden Sie die folgenden Ressourcen:
Bitte helfen Sie uns, indem Sie PRs beibehalten, Github -Probleme für Fehler oder neue Funktionen für Funktionen eröffnen, die Dokumentation verbessern oder die Testabdeckung erhöhen. Lesen Sie mehr darüber, wie man einen Beitrag leisten!
Dieses Projekt wird von Redis, Inc. auf gutem Glauben unterstützt. Um Fehler zu melden, Funktionen anzufordern oder Unterstützung zu erhalten, stellen Sie bitte ein Problem ein.