پایگاه های برداری¶
همه پایگاه ها یک رابط مشترک دارند: افزودن با add، جست و جو با search و شمارش با len. امتیاز بیشتر همیشه یعنی شباهت بیشتر. پایگاه را به build_retriever یا HybridRetriever بدهید.
| پایگاه | افزونه | محل نگهداری | حذف |
|---|---|---|---|
InMemoryVectorStore |
ندارد | حافظه برنامه | بله |
FaissVectorStore |
faiss |
حافظه برنامه | خیر |
QdrantVectorStore |
qdrant |
سرور، سرویس ابری، پوشه محلی یا حافظه | بله |
PgVectorStore |
pgvector |
پایگاه PostgreSQL | بله |
ElasticsearchStore |
ندارد | Elasticsearch 8 | بله |
OpenSearchStore |
ندارد | OpenSearch 2 | بله |
پایگاه های Elasticsearch و OpenSearch جست و جوی BM25 بخش ترکیبی را هم انجام می دهند. صفحه Elasticsearch و OpenSearch را ببینید. پایگاه هایی که حذف را پشتیبانی می کنند با ایندکس سازی تدریجی کار می کنند.
پایگاه Qdrant¶
from persian_rag.vectorstores import QdrantVectorStore
server = QdrantVectorStore("persian_docs", dimension=384, url="http://localhost:6333")
on_disk = QdrantVectorStore("persian_docs", dimension=384, path="./qdrant-data")
in_memory = QdrantVectorStore("persian_docs", dimension=384)
شناسه های متنی به UUID ثابت تبدیل می شوند و شناسه اصلی، متن و فراداده در payload نگهداری می شود. مجموعه در نخستین استفاده ساخته می شود. اگر مجموعه از قبل وجود داشته باشد، ابعاد بردار از خود آن خوانده می شود.
پایگاه PostgreSQL با pgvector¶
from persian_rag.vectorstores import PgVectorStore
store = PgVectorStore(
"postgresql://user:pass@localhost:5432/db",
dimension=384,
table="persian_chunks",
distance="cosine",
create_index=True,
)
این کلاس افزونه vector، جدول لازم و در صورت درخواست نمایه HNSW را می سازد. برای استفاده از اتصال موجود، پارامتر connection= را بدهید. نام جدول بررسی می شود و همه مقدارها به صورت پارامتر به پایگاه فرستاده می شوند.
برای راه اندازی پایگاه محلی:
docker run -e POSTGRES_PASSWORD=postgres -p 5432:5432 pgvector/pgvector:pg16
کتابخانه FAISS¶
from persian_rag import FaissVectorStore
store = FaissVectorStore(dimension=384, metric="cosine")