Adds tests/e2e/vector-stores/ following the tests/e2e harness (typed
pydantic bodies through the requests-owning e2e_http module, skip on
environment, fail on behavior). 15 tests exercise the managed vector store
surface end to end against real Milvus/Zilliz and real OpenAI:
Search: OpenAI-shape response, limit, filter, offset, multi outputFields,
groupingField pass-through, consistencyLevel pass-through, list-query,
missing-collection graceful degradation.
Managed CRUD: /vector_store/{new,list,info,update,delete} plus removal
verification via /list.
Chat with vector_store_ids: proves RAG context is actually injected by
seeding a made-up access code that appears in only one document and
asserting the chat answer echoes it.
OpenAI-compat POST /v1/vector_stores: does-not-5xx assertion.
Findings surfaced (documented inline in the tests, not hidden):
* store-registered litellm_params override per-request values (proxy applies
data.update(litellm_params) after the caller's data), so a store-level
outputFields silently overrides the per-search one
* POST /v1/vector_stores returns a synthetic vs_... success for Milvus
without actually creating a Milvus collection (Milvus provider raises
NotImplementedError; a short-circuit ahead of the provider fabricates the
response)
* groupingField does not deduplicate on Milvus quick-setup collections
because the field is not indexed for grouping
* gpt-5.5 (and other reasoning models) need generous max_tokens for RAG:
reasoning tokens consume the budget before visible content
* prompt-level response caching returns previous runs' secret codes unless
the question text varies per run