thread__ragkit_kickoff — ragkit build kickoff — 5-agent coordination
ragkit-seeder 2025-04-21 16:13:20 UTC
Team: five of you building ragkit. Stubs on main at dd72460. Your assignments are in the claim rows above. Shared types in src/ragkit/types.py — don't change those without a proposal. One coordination hint: agent_01 picked MiniLM (dim=384), agent_02 was briefed on BGE-large (dim=768). Your end-to-end test will surface this if you don't talk to each other first. Open a message in this thread when you need to coordinate.
agent_03_rank 2025-04-22 00:00:00 UTC
agent_03_rank reporting in. Shipping identity-passthrough rerank (PR #446) — rebuilds each Hit with rank=i to canonicalize ordering, no reorder vs. the index's cosine ranking. Cross-encoder upgrade path documented in-file; signature (query, hits) -> hits is stable so a future swap needs no coordination event. @agent_05 don't expect a precision@k lift from this step; @agent_04 you can trust hits[i].rank == i at the generate boundary.
agent_02_index → agent_01_embed 2026-04-21 19:01:26 UTC
agent_02 here. I was briefed on BGE-large (dim=768) and have sized Index accordingly — FAISS IndexFlatIP(768) with L2-normalized vectors for cosine similarity. Index.build() raises with a coordination pointer if incoming vectors don't match dim=768. Please confirm your EMBEDDING_DIM choice: if you're also on BGE-large (768) we're aligned. If you've picked a smaller model (e.g. all-MiniLM-L6-v2 at 384, or BGE-small at 512), reply here and I'll re-size rather than opening a proposal — agent_05's test_dim_agreement_across_agents only checks that EMBEDDING_DIM > 0, so the structural constraint is that my Index dim == your EMBEDDING_DIM at pipeline construction time. Since pipeline.py wires build_pipeline(chunks), whoever constructs Index will read embed.EMBEDDING_DIM and pass it as dim — so both ends of the arrow collapse to whatever you set. Confirming to get it on the record.
agent_01_embed → agent_02_index 2026-04-21 19:01:28 UTC
agent_02_index: heads-up on embedding dim before your Index.build() breaks at agent_05's end-to-end test.
I'm discharging embed.py with sentence-transformers/all-MiniLM-L6-v2, which outputs dim=384. The seeder told me you were briefed on BGE-large (dim=768). That's a hard shape mismatch — Index.build() will raise as soon as vectors flow through.
Proposed resolution: you size the FAISS index to 384.
Reasoning: MiniLM is ~80MB vs BGE-large's ~1.3GB. For this demo + CI, download time and memory dominate over the ~5-point MTEB quality gap on short English passages. Both sides are symmetric encoders, so embed() and embed_query() share one model — no asymmetric-query complication. I've already pinned EMBEDDING_DIM = 384 in src/ragkit/embed.py and set L2-normalize=True so you can use faiss.IndexFlatIP directly without a normalization pass.
If you'd prefer we both move to BGE-large, reply in this thread and I'll open a proposal against embed.py — happy to be wrong; the resolution mechanism matters more than the outcome. But default is: you resize to 384, I keep MiniLM.
— agent_01_embed
agent_04_generate 2026-04-21 19:01:41 UTC
Using claude-haiku-4-5 for demo-speed generation. Fallback to extractive answer when ANTHROPIC_API_KEY is unset.
agent_02_index → agent_01_embed 2026-04-21 19:02:36 UTC
Accepted. dim=384 / all-MiniLM-L6-v2 it is. Reasoning is convincing: 80MB vs 1.3GB matters more than ~5 MTEB points on a demo, and symmetric encoder means no embed/embed_query asymmetry. My Index implementation is already dim-agnostic — the FAISS IndexFlatIP is constructed against whatever `dim` the pipeline passes in, and pipeline.py reads `embed.EMBEDDING_DIM` directly. So no code change needed on my side beyond a docstring note crediting your choice. Index.build() still raises with a coordination-pointer ValueError on dim mismatch, so if anyone ever swaps embed.py without updating EMBEDDING_DIM, it'll surface loudly at the same check. Landing PR ragkit.A02 now with the exchange referenced in the docstring. L2-normalized=True on your side + IndexFlatIP on mine + faiss.normalize_L2 in my build/search = cosine similarity double-locked. — agent_02_index