Shipped langchain-vectorpanda 0.1.0 on the first of June. A LangChain VectorStore wrapper around the Python SDK, and the design goal was boring on purpose -- no state of its own, no clever caching, nothing that can disagree with the SDK underneath it. A wrapper with opinions is a wrapper that lies to somebody's RAG pipeline at retrieval time.
Boring still got the full CI treatment. Unit tests plus a hosted end-to-end against a live cluster with real embeddings -- add-then-retrieve, metadata round-trips, delete(ids), MMR, the whole VectorStore contract on every push. When a wrapper is this thin, the tests are mostly testing us. Which is the point.
Shipping it flushed out a liar, though. Our cosine scores are raw [-1, 1], same convention as everybody else, but the SDK's query default was quietly filtering results below a threshold. LangChain callers asked for k=10 and sometimes got 7, no explanation. veep 0.5.19 changed the default min_score to -1.0 -- return what I asked for, I'll do my own filtering. Should've been that way from day one.
Also swept alternative-code tabs across every example on the site. 11 surfaces. Anywhere you see raw SDK, flip the tab and see the LangChain version of the same thing.
