Retrieval-Augmented Generation (RAG) is a pattern that combines:
to produce accurate, context-aware answers.
RAG integrates external data retrieval into LLM generation to improve accuracy and relevance. ([Qdrant][1])
LLMs alone:
RAG solves this:
LLM + your data = grounded answers
User Query
↓
Embedding
↓
Vector DB (Qdrant)
↓
Relevant Documents
↓
LLM
↓
Answer
A RAG system always consists of:
documents → chunking → embeddings → stored in Qdrant
👉 enables similarity search ([Qdrant][1])
takes:
generates final answer
👉 retrieval feeds generation ([Qdrant][1])
"how can I setup ascender ldap auth?"
"how to configure ldap in awx ascender"
→ vector
Qdrant finds relevant chunks like:
LDAP AUTH HACKS
LDAP Group Search
LDAP User Attribute Map
LLM receives:
Question + retrieved content
→ generates structured answer
Instead of hallucination:
"I think LDAP works like..."
You get:
"Use LDAP Server URI ldap://192.168.11.202:389..."
→ grounded in your actual wiki
{
"id": "b11fbb1d-5a46-45c9-83c7-d47ea973cf08",
"payload": {
"content": "...LDAP AUTH HACKS...",
"metadata": {
"source": "https://wiki.bitbull.ch/en/ansible/awx_ascender/ldap_auth",
"title": "Ascender LDAP Auth",
"tag": ["ansible", "freeipa", "awx", "ldap"],
"date": "2026-02-15T08:14:27.031Z"
}
}
}
content → semantic search (vector)
metadata → filtering (exact match)
POST /collections/wiki/points/scroll
{
"filter": {
"should": [
{
"key": "metadata.source",
"match": {
"value": "https://wiki.bitbull.ch/en/ansible/awx_ascender/ldap_auth"
}
}
]
}
}
NOT vector search
→ just filtering
Equivalent:
SELECT * WHERE metadata.source = ...
POST /collections/wiki/points/query
{
"query": [0.12, -0.3, ...],
"limit": 5,
"with_payload": true
}
{
"result": [
{
"id": "...",
"score": 0.82,
"payload": {...}
}
]
}
POST /collections/wiki/points/query
{
"query": [0.12, -0.3, ...],
"filter": {
"must": [
{
"key": "metadata.tag",
"match": { "value": "ldap" }
}
]
},
"limit": 5
}
semantic search + exact filter
→ best of both worlds
User:
"how to configure ldap in awx?"
↓
Embedding
↓
Qdrant returns:
- LDAP config snippet
- AWX settings
- group mapping
↓
LLM prompt:
"Answer using this context:
[LDAP snippet]
[AWX config]"
↓
Answer:
step-by-step LDAP config
"ldap config awx"
→ finds correct page without keyword match
scroll API
→ inspect chunks from a source
"metadata.tag": "ansible"
→ restrict domain
"metadata.date > now-30d"
→ only recent configs
"metadata.user_id": "123"
→ isolate users
You already have:
👉 ready for RAG
You currently use:
scroll API → filtering only
You need:
query API → semantic retrieval
vector = meaning
payload = control
Not Qdrant:
Qdrant = brain memory
LLM = reasoning engine
RAG = connection between both