مرحبًا بكم في مكتبة Redis Vector - عميل Python النهائي المصمم لتطبيقات الذكاء الاصطناعى التي تسخر قوة 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عزز تجربتك وقابلية الملاحظة مع واجهة المستخدم الرسومية Redis Insight المجانية.
صمم مخططًا لحالة الاستخدام التي تقوم بتصميم مجموعة البيانات الخاصة بك مع الحقول المدمجة والمؤسسات القابلة للفهرسة ( على سبيل المثال النص ، العلامات ، الأرقام ، الجيولوجية ، والمتجهات ). قم بتحميل مخطط من ملف 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" )أو التحميل مباشرة من قاموس بيثون:
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 ()فئة فهرس البحث المتوافقة مع ASYNC متاح أيضًا: 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 - عد عدد السجلات المفهرسة المعطاة
اقرأ المزيد عن بناء استعلامات 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 والوكلاء. لقد جلبنا أفضل ما تعلمناه من مستخدمينا (هذا أنت) بالإضافة إلى عملاء حافة النزيف ، وقمنا بتعبئته.
هل لديك فكرة لتمديد آخر؟ افتح العلاقات العامة أو تواصل معنا على [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.
في عصر Genai ، تقوم قواعد بيانات المتجهات و LLMs بتحويل أنظمة استرجاع المعلومات. مع الأطر الناشئة والشعبية مثل Langchain و Llamaindex ، الابتكار سريع. ومع ذلك ، تواجه العديد من المنظمات التحدي المتمثل في تقديم حلول الذكاء الاصطناعى بسرعة وعلى نطاق واسع .
أدخل Redis - حجر الزاوية في عالم NOSQL ، يشتهر بهياكل البيانات متعددة الاستخدامات ومحركات المعالجة. يتفوق Redis في أعباء العمل في الوقت الفعلي مثل التخزين المؤقت وإدارة الجلسة والبحث. إنها أيضًا قوة قوة كقاعدة بيانات متجه لـ Rag و LLM ذاكرة التخزين المؤقت ومتجر ذاكرة جلسة الدردشة لمحادثة AI.
تقوم مكتبة Redis Vector بسد الفجوة بين النظام الإيكولوجي للمطور الأصلي وقدرات Redis القوية. من خلال واجهة خفيفة الوزن وأنيقة وبديهية ، يجعل RedisVL من السهل الاستفادة من قوة Redis. بنيت على عميل Redis Python ، يحول redisvl ميزات Redis إلى قواعد محددة تمامًا مع احتياجات مهندسي AI/ML اليوم وعلماء البيانات.
للحصول على مساعدة إضافية ، تحقق من الموارد التالية:
الرجاء مساعدتنا من خلال المساهمة في PRS ، أو فتح مشكلات github عن الأخطاء أو أفكار الميزات الجديدة ، أو تحسين الوثائق ، أو زيادة تغطية الاختبار. اقرأ المزيد عن كيفية المساهمة!
يتم دعم هذا المشروع من قبل Redis ، Inc على أساس جهد حسن النية. للإبلاغ عن الأخطاء أو الطلبات أو تلقي المساعدة ، يرجى تقديم مشكلة.