Qdrant: قابلیت های جستجوی خود را با جستجوی برداری کارآمد افزایش دهید
Qdrant یک موتور جستجوی برداری و پایگاه داده با کارایی بالا است که خدمات قابل اعتماد و آماده تولید را با یک API ساده برای ذخیره، جستجو و مدیریت بردارها و سایر ابرداده ها ارائه می دهد. Qdrant در نظر گرفته شده است تا فیلتر گسترده ای را ارائه دهد، و آن را به ویژه برای برنامه هایی که نیاز به شبکه عصبی یا تطابق مبتنی بر معنایی، جستجوی وجهی، و سایر موارد استفاده مرتبط دارند، مناسب می کند.
Qdrant به زبان برنامه نویسی Rust نوشته شده است که نوید سرعت، عملکرد و قابلیت اطمینان بی نظیر را حتی در شرایط بار بسیار زیاد می دهد. معیارهای Qdrant نشان دهنده ظرفیت آن برای مدیریت کارآمد و سریع حجم عظیمی از داده های با ابعاد بالا است.
Qdrant به شما امکان میدهد جاسازیها یا رمزگذارهای شبکه عصبی را به برنامههای کامل برای مطابقت، جستجو، توصیه و موارد دیگر تبدیل کنید. API کاربرپسند و ویژگیهای جستجوی گسترده آن، ایجاد برنامههای جستجوی مشابه پیچیده را بدون نگرانی در مورد زیرساخت اصلی آن آسان میکند.
نصب محلی
کلاینت Qdrant را با استفاده از pip نصب کنید.
pip install qdrant-client
کلاینت پایتون به شما امکان می دهد همان کد را در حالت محلی بدون راه اندازی سرور Qdrant اجرا کنید. به عبارت ساده، کلاینت را به صورت زیر مقداردهی اولیه کنید:
از واردات qdrant_client QdrantClient
client = QdrantClient(path="path/to/db")
Qdrant نصب با استفاده از Docker
ساده ترین روش برای شروع با Qdrant اجرای آن از تصویر داکر است. DockerHub همیشه بیشترین نسخه های اخیر.
اطلاعات sudo docker
تصویر را برای Docker بکشید
docker pull qdrant/qdrant
کانتینر را اجرا کنید
docker run -p 6333:6333
-v $(pwd)/path/to/data:/qdrant/storage
qdrant/qdrant
این دستور یک نمونه Qdrant را با استفاده از تنظیمات پیشفرض راهاندازی میکند. تمام داده ها را در فهرست ./path/to/data ذخیره می کند.
اکنون Qdrant باید در localhost:6333 قابل دسترسی باشد.
اتصال به ابر Qdrant
میتوانید ثبتنام کنید و از Qdrant Cloud برای دریافت یک ردیف رایگان استفاده کنید.
هنگامی که خوشه و کلید API خود را دارید، میتوانید به این شکل به آن متصل شوید:
از واردات qdrant_client QdrantClient
qdrant_client = QdrantClient(
url="https://xxxxxx-xxxxx-xxxxx-xxxx-xxxxxxxxx.us-east.aws.cloud.qdrant.io:6333"،
api_key="",
)
نمونهها
یک مجموعه جدید ایجاد کنید
از qdrant_client.models import Distance, VectorParams
client.recreate_collection(
collection_name="مجموعه_من"،
vectors_config=VectorParams(اندازه=100، فاصله=فاصله.COSINE)،
)
درج بردارها در مجموعه
وارد کردن numpy به عنوان np
از qdrant_client.models وارد کردن PointStruct
بردارها = np.random.rand(100، 100)
client.upsert(
collection_name="مجموعه_من"،
امتیاز=[
PointStruct(
id=idx
vector=vector.tolist(),
payload={"color": "red", "rand_number": idx % 10}
)
برای idx، بردار در enumerate(بردارها)
]
)
بردارهای مشابه را جستجو کنید
query_vector = np.random.rand(100)
بازدید = client.search(
collection_name="مجموعه_من"،
query_vector=query_vector،
limit=5 # برگرداندن 5 نزدیکترین نقطه
)
بردارهای مشابه با شرایط فیلتر را جستجو کنید
از qdrant_client.models وارد کردن فیلتر، FieldCondition، محدوده
بازدید = client.search(
collection_name="مجموعه_من"،
query_vector=query_vector،
query_filter=فیلتر(
must=[ # این شرایط برای نتایج جستجو لازم است
شرایط فیلد(
key='rand_number'، # شرط بر اساس مقادیر فیلد 'rand_number'.
محدوده=محدوده(
gte=3 # فقط آن دسته از نتایجی را انتخاب کنید که "rand_number" >= 3 باشد
)
)
]
)
limit=5 # برگرداندن 5 نزدیکترین نقطه
)
gRPC
برای فعال کردن (معمولاً، بسیار سریعتر) بارگذاری مجموعه با gRPC، از مقداردهی اولیه زیر استفاده کنید:
از واردات qdrant_client QdrantClient
client = QdrantClient(host="localhost", grpc_port=6334, prefer_grpc=True)
کارخواه ناهمگام
کاربرهای تولید خودکار خام از روشهای همگامسازی پشتیبانی میکنند. به طور معمول، شما نیازی به استفاده مستقیم از آنها ندارید، اما اگر به عملکرد اضافی نیاز دارید، می توانید.
نمونه ای از استفاده از سرویس گیرنده خام async gRPC:
از qdrant_client import QdrantClient, grpc
کلاینت = QdrantClient (prefer_grpc=True, timeout=3.0)
grpc_collections = client.async_grpc_collections
res = در انتظار grpc_collections.List(grpc.ListCollectionsRequest(), timeout=1.0)
توسعه
این پروژه از git hook برای اجرای قالبکنندههای کد استفاده میکند.
pre-commit
را با pip3 install pre-commit
نصب کنید و قلابها را با pre-commit install
راهاندازی کنید.
استراحت
اسناد آنلاین OpenAPI 3.0 اینجا موجود است. OpenAPI تولید کلاینت را برای تقریباً هر فریمورک یا زبان برنامه نویسی آسان می کند. همچنین میتوانید تعاریف OpenAPI خام را دانلود کنید .
همچنین، موتور جستجوی Google و ChatGPT OpenAI.
ویژگی ها
فیلتر کردن و بارگذاری بار
بارهای JSON را میتوان با بردارهایی در Qdrant مرتبط کرد که بسته به مقادیر بارگذاری، هم ذخیرهسازی و هم فیلتر کردن را فراهم میکند. برخلاف Elastic Search post-filtering، ترکیبهای مختلفی از شرایط باید، باید و must_not را فعال میکند و بازیابی همه بردارهای مرتبط را تضمین میکند.
باربری برداری از طیف گسترده ای از انواع داده ها و شرایط پرس و جو، مانند تطبیق متن، محدوده های عددی، مکان های جغرافیایی و موارد دیگر پشتیبانی می کند. این شرایط فیلتر به شما این امکان را می دهد که منطق تجاری منحصر به فردی را در کنار تطبیق شباهت ایجاد کنید.
برنامه ریزی پرس و جو و شاخص های بارگذاری بار
برای بهینه سازی اجرای پرس و جو، برنامه ریز پرس و جو از اطلاعات بارگیری ذخیره شده در حافظه پنهان استفاده می کند. برای مثال، فضاهای جستجوی کوچکتر که توسط فیلترها محدود شدهاند، ممکن است از نیروی بیرحمانه کامل بر یک فهرست بهره ببرند.
Qdrant با استفاده از معماریهای مدرن CPU x86-x64، عملکرد جستجوی بالاتری را در سختافزار مدرن ارائه میدهد.
Qdrant با تأیید بهروزرسانیها، حتی در زمان قطع برق، از ماندگاری دادهها پشتیبانی میکند. گزارش به روز رسانی همه عملیات را ثبت می کند و امکان بازسازی آسان آخرین وضعیت پایگاه داده را فراهم می کند.
از تاریخ نسخه 8.0، Qdrant از استقرار توزیع شده پشتیبانی می کند. چندین ماشین Qdrant یک خوشه برای مقیاس بندی افقی تشکیل می دهند که از طریق پروتکل Raft هماهنگ شده است..
Qdrant مستقل از پایگاههای داده خارجی یا کنترلکنندههای ارکستراسیون عمل میکند، که پیکربندی را ساده میکند.
این مقاله به شما کمک می کند تا در مورد Qdrant بیاموزید. ما اطمینان داریم که برای شما مفید بوده است. لطفاً نظرات و انتقادات خود را در بخش نظرات زیر به اشتراک بگذارید.