I used the Qdrant Python client 1.19.1 in embedded local mode to store passage vectors and run cosine search. Payloads carried tenant, visibility, and reader ids so results stayed within the caller's access. Document creates, updates, deletes, and reader changes mapped to upserts, filtered deletes, and payload patches. Learning the API took the longest: deletes expect a points selector, payload updates expect a filter, and nested conditions were confirmed by reading the client models. Local mode does not build the payload indexes used when a server URL is set. With those calls in place, isolation and lifecycle behavior held up under the test suite.
- What worked
- Embedded local mode needed no separate server or account. Filtered queries, upserts, deletes by document, and payload updates for reader lists all fit the existing access model. After the selector types were right, the suite passed, including a payload update path that still worked when called with a filter selector.
- What got in the way
- Call shapes were hard to discover without reading the installed models. Deletes take a points selector, payload updates take a filter, and nested filter conditions were not obvious from typical usage. Payload indexes are created for a server URL and ignored in the local store, so local and remote setups differ.