حافظهی بلندمدت برای اپهای هوش مصنوعی
Qdrant بردارهای embedding را با هر تعداد بعد ذخیره و با جستوجوی شباهت (cosine، dot، euclid) نزدیکترینها را پیدا میکند. فیلتر روی payload اجازه میدهد جستوجوی معنایی را با شرطهایی مثل زبان، کاربر یا تاریخ ترکیب کنید.
برای RAG، توصیهگر و جستوجوی معنایی در متن فارسی، embedding ها را با مدل دلخواه بسازید و در Qdrant نگه دارید. اگر فقط چند هزار بردار دارید، pgvector در PostgreSQL هم گزینهی سادهتری است.
مناسب برای
- RAG برای چتبات و دستیار
- جستوجوی معنایی اسناد
- توصیهگر محصول و محتوا
- تشخیص موارد مشابه و تکراری
از ساخت تا اتصال
ساخت
نود Qdrant با نسخهی پیشفرض 1.18 ساخته میشود.
--type qdrantاطلاعات اتصال
میزبان و کلید API را بگیرید و به اپ بدهید.
env set QDRANT_HOST=…استفاده
کالکشن بسازید، بردار upsert و جستوجو کنید.
:6333
خروجی ساخت سرویس
sakoocloud db create --name vectors --type qdrant ✔ Provisioning vectors · db_4n8x2p sakoocloud db credentials db_4n8x2p sakoocloud env set QDRANT_HOST=… QDRANT_API_KEY=•••• --app my-api
ساخت نود
با CLI یا از کنسول.
sakoocloud db create --name vectors --type qdrant
تنظیمات
متغیرهایی که تعریف میکنید
اپ و سرویس را در یک پروژه بگذارید، مقدارها را از sakoocloud db credentials بردارید و با sakoocloud env set تعریف کنید. نام متغیرها دلخواه است.
| متغیر پیشنهادی | مقدار |
|---|---|
QDRANT_HOST | آدرس داخلی؛ REST روی 6333، gRPC روی 6334 |
QDRANT_API_KEY | کلید API |
اتصال از اپ
کلاینت رسمی Qdrant میزبان و کلید را میگیرد.
import os
from qdrant_client import QdrantClient
client = QdrantClient(
url=f'http://{os.environ["QDRANT_HOST"]}:6333',
api_key=os.environ["QDRANT_API_KEY"],
)
hits = client.query_points("docs", query=embedding, limit=5)
import { QdrantClient } from "@qdrant/js-client-rest";
const qdrant = new QdrantClient({
url: `http://${process.env.QDRANT_HOST}:6333`,
apiKey: process.env.QDRANT_API_KEY,
});
خطاهای رایج
403 Forbidden
علتکلید API در درخواست نیست.
راهحلQDRANT_API_KEY را به کلاینت بدهید.
اتصال برقرار نمیشود
علتکلاینت REST به پورت gRPC یا برعکس وصل میشود.
راهحلREST روی 6333 و gRPC روی 6334 است.
Collection not found
علتکالکشن قبل از upsert ساخته نشده یا ابعاد بردار فرق دارد.
راهحلکالکشن را با اندازهی بردار مدل embedding بسازید.
پرسشهای متداول
Qdrant یا pgvector؟
برای چند ده هزار بردار کنار دادهی رابطهای، pgvector سادهتر است. برای میلیونها بردار و فیلتر پیچیده، Qdrant.
embedding را با چه مدلی بسازم؟
هر مدلی؛ Qdrant فقط بردار را ذخیره میکند. ابعاد کالکشن باید با خروجی مدل یکی باشد.
gRPC هم در دسترس است؟
بله، روی پورت 6334 برای کارایی بالاتر.
جزئیات بیشتر در راهنمای Qdrant در مستندات و مرجع CLI.