Добро пожаловать в векторную библиотеку Redis - Ultimate Python Client, предназначенный для приложений AI, используя силу Redis.
Redisvl-ваш инструмент для:
Установите redisvl в свою среду Python (> = 3.8), используя pip :
pip install redisvlДля получения более подробных инструкций посетите руководство по установке.
Выберите из нескольких вариантов развертывания Redis:
docker run -d --name redis-stack -p 6379:6379 -p 8001:8001 redis/redis-stack:latestУвеличьте свой опыт и наблюдение с помощью GUI Free Redis Insight.
Разработайте схему для вашего варианта использования, которая моделирует ваш набор данных со встроенными Redis и индексабельными полями ( например, текст, теги, числовые, гео и векторы ). Загрузите схему из файла 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" )Или загрузите непосредственно из словаря 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"
}
}
]
})Создайте класс SearchIndex с входной схемой и клиентским соединением, чтобы выполнить операции администратора и поиска в вашем индексе в 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 ()Асинхронно соответствующий индекс поиска также доступен: AsyncSearchIndex.
Загрузить и получить данные в/из экземпляра 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" )Определите запросы и выполните расширенные поиски по своим индексам, включая комбинацию векторов, фильтров метаданных и многого другого.
Vectorquery - Гибкие векторные запросы с настраиваемыми фильтрами, включающими семантический поиск:
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 )Включите сложные фильтры метаданных в свои запросы:
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 - векторный поиск в определенном диапазоне в сочетании с настраиваемыми фильтрами
FilterQuery - Стандартный поиск с использованием фильтров и полнотекстового поиска
CountQuery - Подсчитайте количество индексированных записей, данных атрибутов
Узнайте больше о создании Advanced Redis -запросов.
Интегрируйте с популярными поставщиками встраивания, чтобы значительно упростить процесс векторизации неструктурированных данных для вашего индекса и запросов:
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"
)Узнайте больше об использовании векторов в ваших рабочих процессах встраивания.
Интегрируйте с популярными поставщиками переездов для улучшения актуальности первоначальных результатов поиска Redis
Мы рады объявить о поддержке расширений Redisvl . Эти модули реализуют интерфейсы, разоблачающие лучшие практики и шаблоны проектирования для работы с памятью LLM и агентами. Мы взяли лучшее из того, что мы узнали от наших пользователей (то есть вы), а также клиентов с кровотечением, и упаковали его.
Есть идея для другого расширения? Откройте PR или обратитесь к нам по адресу [email protected]. Мы всегда открыты для обратной связи.
Увеличить пропускную способность применения и снизить стоимость использования моделей LLM в производстве, используя ранее сгенерированные знания с помощью 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
Узнайте больше о семантическом кэшировании для LLMS.
Улучшить персонализацию и точность ответов LLM, предоставив историю пользовательского чата в качестве контекста. Управляйте доступом к данным сеанса, используя рецензию или релевантность, питается векторным поиском с помощью 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" }
])Получите недавнюю историю чата:
session . get_recent ( top_k = 1 ) >>> [{"role": "assistant", "content": "I don't know"}]
Получите соответствующую историю чата (питается по поиску вектора):
session . get_relevant ( "weather" , top_k = 1 ) >>> [{"role": "user", "content": "what is the weather going to be today?"}]
Узнайте больше о управлении сеансами LLM.
Создайте быстрые модели принятия решений, которые работают непосредственно в Redis и маршрут запросы пользователей в ближайшем «маршруте» или «теме».
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)
Узнайте больше о семантической маршрутизации.
Создать, уничтожить и управлять конфигурациями индекса Redis из специально построенного интерфейса CLI: 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 indexУзнайте больше об использовании CLI.
В эпоху Геная векторные базы данных и LLMS преобразуют системы поиска информации. С появлением и популярными рамками, такими как Langchain и Llamaindex, инновации быстрые. Тем не менее, многие организации сталкиваются с проблемой быстрого и масштаба в масштабе .
Введите Redis - краеугольный камень мира NOSQL, известный своими универсальными структурами данных и обработчивыми двигателями. Redis превосходит рабочие нагрузки в реальном времени, такие как кэширование, управление сеансами и поиск. Это также мощность в качестве векторной базы данных для тряпки, кэша LLM и хранилища памяти сеанса чата для разговорного искусственного интеллекта.
Библиотека Vector Redis переворачивает разрыв между EI-немолевой разработчиком Ecosystem и надежными возможностями Redis. С помощью легкого, элегантного и интуитивно понятного интерфейса Redisvl позволяет легко использовать мощность Redis. Построенный на клиенте Redis Python, redisvl превращает функции Redis в грамматику, идеально подходящую с потребностями современных инженеров AI/ML и ученых данных.
Для получения дополнительной помощи, ознакомьтесь с следующими ресурсами:
Пожалуйста, помогите нам, внесли свой вклад, открыв проблемы GitHub для ошибок или новые идеи функций, улучшая документацию или увеличив тестовое покрытие. Узнайте больше о том, как внести свой вклад!
Этот проект поддерживается Redis, Inc на основе добросовестных усилий. Чтобы сообщить об ошибках, запросить функции или получить помощь, пожалуйста, подайте проблему.