پایگاههای برداری و بازیابی
توسعه عاملهای هوشمند (Agentic Ai) با Langchain و Langgraph
- Index chunks into an in-memory or persistent vector store.
- Run similarity search and retrieve top-k documents.
- Apply metadata filters and inspect retrieved provenance.
از Embeddings تا جستوجو
**ایدهٔ اصلی**
Vector Store بردارها را برای جستوجوی سریع، همراه با متن و metadata نگه میدارد.
```mermaid
flowchart LR
A["Local files"] --> B["Chunks"]
B --> C["Embeddings"]
C --> D["Vector Store"]
Q["Query"] --> E["Query embedding"]
E --> D
D --> F["Top-k Documents"]
F --> G["RAG context"]
```
ساخت نمایه از فایلها
**نمونهٔ نمایهسازی**
دو Document داریم: یکی دربارهٔ بازپرداخت و یکی دربارهٔ پشتیبانی. `add_documents(chunks)` هر دو را به embedding تبدیل میکند و متن و metadata را کنار بردارها ذخیره میکند.
```mermaid
flowchart TD
A["Document chunks"] --> B["Embedding model"]
B --> C["Vectors"]
C --> D["Vector Store"]
D --> E["Documents + metadata"]
```
Similarity Search و top-k
**رتبهبندی عددی**
`policy.txt` امتیاز `0.92` و `contact.txt` امتیاز `0.18` دارد؛ چون `0.92 > 0.18`، policy رتبهٔ اول است. با `k=2` هر دو نتیجه برمیگردند.
```mermaid
flowchart LR
A["Query"] --> B["Query embedding"]
B --> C["Similarity score"]
C --> D["Rank descending"]
D --> E["Return first k"]
```
یک نمونهٔ کامل از بازیابی
**مثال عددی کامل**
با scoreهای `0.91`، `0.76` و `0.12`، ترتیب نزولی `A`، `B`، `C` است. چون `k=2`، فقط `A` و `B` وارد context میشوند و `C` حذف میشود.
فیلتر metadata و provenance
**فیلتر روی دو سند**
سند سیاست مقدار `section="refund"` دارد و سند تماس مقدار `section="support"`. فیلتر `{"section": "refund"}` فقط سند سیاست را عبور میدهد؛ سپس همان نتیجه رتبهبندی و چاپ میشود.
```mermaid
flowchart TD
A["All indexed chunks"] --> B{"metadata filter"}
B -->|"section = refund"| C["Eligible chunks"]
B -->|"otherwise"| D["Exclude"]
C --> E["Similarity ranking"]
E --> F["Top-k results"]
```
Retriever و تنظیم دقیق k
**تفسیر پارامترها**
با `fetch_k=2` دو نامزد اولیه بررسی میشوند؛ با `k=1` فقط یک نتیجهٔ نهایی برمیگردد؛ و `lambda_mult=0.5` تعادل میانهای میان شباهت و تنوع ایجاد میکند.
```mermaid
flowchart LR
A["Vector Store"] --> B["Retriever interface"]
B --> C["Query"]
C --> D["Ranked Documents"]
```
بازگشت به دوره