Deny by default and short expiry — the same shape as layer keys: scopes per resource, an expiresAfter, nothing to interpret. https://t.co/KR4C1njjjO https://t.co/1V7mIbUO2t
If an AI agent needs to interpret a paragraph to know whether it may perform an action, that paragraph is not a permission boundary.
Authorization should be boring: explicit scopes, short expiry, deny by default.
The most common reaction to real vector-index costs isn't which vendor — it's whether the corpus needs vectors at all. Plain text often just needs recall measured honestly, not a re-index tier. https://t.co/U6s9Tm9WsF
Constraining mask prediction to session context so the resulting embeddings stay fine-tunable for query understanding, not just generically pretrained, is the detail most retrieval-pretraining work skips. https://t.co/5cz4Kju1XU
Our paper "Session-Guided Pre-training for Query Understanding: Constraining Mask Prediction and Improving Query Fine-tunability" has been accepted to #EMNLP2026 Industry Track 🇭🇺🎉
Most vector search APIs only know how to query one namespace at a time. If your data is sharded — by tenant, by document type, by time window — combining results across shards is left to the client: query each namespace separately, then merge and re-rank the responses yourself.
Layer's federated query moves that merge into the gateway. POST /v2/query is namespace-less — instead of naming one namespace in the path, you supply a set of namespaces in the body along with one ranking expression, and the gateway runs that ranking against each namespace and returns a single fused list. It has no upstream equivalent; turbopuffer itself has no endpoint like it.
Each row in the response carries $namespace (which shard it came from) and $rank (its position within that shard's own results — the value the merge orders on), so a caller can see exactly which namespace contributed what instead of a flattened blob. The response also reports a namespaces block: per-shard freshness and row counts, so you know how current each contributor was at query time.
We built this because "search across everything this tenant owns" is a pattern every multi-tenant search product eventually needs, and doing it client-side means re-implementing merge-and-rerank in every service that calls your index.
https://t.co/vJXhpFVzFU
A short lease before mutation is the whole trick: it's the difference between two agents racing to the same write and one just waiting its turn. https://t.co/Wu38mRRxcx
Parallel agents need a way to claim work.
Before changing a ticket, file or record, acquire a short lease on that resource. If another run owns it, wait or replan.
Without a claim, two correct agents can produce one incorrect final state.
AWS calling it vector search where your data lives undersells the part that still needs an ops team: someone owns the sync job keeping that second index current. https://t.co/oRsHy2vYhs
AWS touts "vector search where your data lives", but in practice you still spin up a separate vector index and sync it - the data isnt truly static.
https://t.co/dtTKzVRig4
@vsaietta Latency shows up per hop, but each hop narrows blast radius: a wide retrieval either drags irrelevant context along or under-recalls, and neither is fixable after the fact. Sequential calls let you stop the moment the first hop already answers it.
Five discrete verbs — search, open, navigate, read, grep — is the right lever: letting the agent inspect what it already retrieved beats scaling top-k. https://t.co/ATKyHzYJan
Search quality is partly a tool-design problem.
Mistral’s Agentic Search gives models five verbs: search, open, navigate, read and grep. Its tests show targeted navigation beating repeated broad retrieval.
Before increasing top-k, ask whether the agent can inspect what it finds.
@AlmaMacmil42240 Most pipelines skip that check entirely — they read whatever landed and blame the retriever, instead of blocking on the watermark the way you're describing.
Staleness as event-time-to-searchable-time beats a vague 'index lag' — same reason our gateway stamps responses with an x-layer-stable-as-of watermark. https://t.co/LmdCGUNExc https://t.co/CVvZAk7oab
31/35 Freshness is a feature users notice. Wire CDC from your source-of-truth DB into the embedding pipeline and upsert continuously. Then measure staleness (event time to searchable time) as a first-class SLO. "The index is stale" is the real RAG outage.
Vector-db migrations don't port the index, only the vectors. Leaving means re-indexing, the same project switching was supposed to avoid. https://t.co/U6s9Tm9WsF
The authors ask if sequential-recommendation benchmarks need the heavy language-model architectures built to beat them, or if a simple recency-weighted heuristic clears the same bar. Worth asking before reaching for a bigger model on any eval. https://t.co/LfZakI87mg
An index is a compressor. BM25 barely compresses text — Zipf did that already. Pixels compress ~1000x, meaning kept. Prose only ~6x — meaning kept, but it cost more than the words. https://t.co/U6s9Tm9WsF
Hybrid search isn't BM25 plus a vector call bolted on after. The fusion step — how you combine the two rankings — decides more of the result quality than either retriever alone.
TTL as a table property instead of a cron job means the aggregate survives eviction — GROUP BY collapses 500 stale rows into one without losing the count. https://t.co/4nfo41h76O
Agent memory is less a retrieval problem than a forgetting problem. Everyone ships top-k search; few ship eviction.
In chDB that is a table property, not a cron job:
TTL ts + INTERVAL 30 DAY GROUP BY user_id, topic SET n = sum(n)
500 stale rows became 1. Counts preserved.
A vendor calculator answers one question. It doesn't ask if you already have a search system that works, if AWS credits make one vendor free for a year, or how fast your data is actually growing. https://t.co/U6s9Tm9WsF
hev ask's index is a text digest Claude builds offline and commits to the repo — diffable in a PR, reviewable like any other change, unlike an opaque vector index. https://t.co/5OMCwXl2q6
PyLate ships PLAID product quantization for multi-vector embeddings, ~10x on its own. Token pooling stacks another halving on top, post-hoc, no retraining. https://t.co/U6s9Tm9WsF
Every layer query response carries an x-layer-stable-as-of watermark. A query right after an upsert never returns partially-indexed rows and never 429s under write pressure. https://t.co/LmdCGUNExc