数据截至 (上游 commit b423f15d9aea)
检索抽象与数据灌入
本章讲数据侧的两件事:查询时
search()怎么把 N 种向量库统一起来并行检索;以及灌库时数据怎么从 Schema.org JSON 变成向量库里的可检索文档。
3.1 一个 search(),背后多种向量库
NLWeb 支持 Qdrant / Azure AI Search / Milvus / Postgres / Elasticsearch / Snowflake / Cloudflare AutoRAG / Bing / Shopify MCP 等一长串后端。它用经典的「抽象基类 + 具体实现」把它们统一(core/retriever.py):
VectorDBClientInterface(retriever.py:144)是抽象基类,定义search/upload_documents/search_by_url/search_all_sites等抽象方法。- 每个后端在
retrieval_providers/下有一个实现(如qdrant.py、azure_search_client.py)。 VectorDBClient(retriever.py:351