PageSourceSearch

https://weaviate.io/assets/js/39f5003c.e6d3b33e.js

js weaviate.io collected 2026-10-01 08:35:11 UTC 8,074 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkmy_website=globalThis.webpackChunkmy_website||[]).push([[2138],{32843(e,n,t){t.r(n),t.d(n,{assets:()=>d,contentTitle:()=>c,default:()=>u,frontMatter:()=>l,metadata:()=>o,toc:()=>h});var o=t(87695),i=t(74848),r=t(28453),a=t(49107),s=t(73284);const l={title:"Token Pooling to Scale Multi-Vector Retrieval Systems",slug:"colbertpooling",authors:["zain"],date:new Date("2024-06-30T00:00:00.000Z"),tags:[],image:"./img/hero.png",description:"Clustering tokens to make ColBERT more efficient and usable with Vector DBs!"},c=void 0,d={image:t(65527).A,authorsImageUrls:[void 0]},h=[{value:"\ud83c\udff9Multi-vector retrieval approaches, like ColBERT, have great retrieval quality but vector count can balloon, AnswerAI propose a solution!",id:"multi-vector-retrieval-approaches-like-colbert-have-great-retrieval-quality-but-vector-count-can-balloon-answerai-propose-a-solution",level:2},{value:"Breakdown of different types of encoders:",id:"breakdown-of-different-types-of-encoders",level:2},{value:"Main weakness of multi-vector approaches:",id:"main-weakness-of-multi-vector-approaches",level:2},{value:"AnswerAI's Proposed Token Pooling Solution:",id:"answerais-proposed-token-pooling-solution",level:2},{value:"Results:",id:"results",level:2},...s.RM];function p(e){const n={a:"a",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,r.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:(0,i.jsx)(n.img,{alt:"A preview of the paper",src:t(70700).A+"",width:"1070",height:"636"})}),"\n","\n",(0,i.jsx)(n.h2,{id:"multi-vector-retrieval-approaches-like-colbert-have-great-retrieval-quality-but-vector-count-can-balloon-answerai-propose-a-solution",children:"\ud83c\udff9Multi-vector retrieval approaches, like ColBERT, have great retrieval quality but vector count can balloon, AnswerAI propose a solution!"}),"\n",(0,i.jsx)(n.p,{children:"Below is an explanation of how ColBERT works and AnswerAI's proposed modification!"}),"\n",(0,i.jsx)(n.h2,{id:"breakdown-of-different-types-of-encoders",children:"Breakdown of different types of encoders:"}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Cross-encoders:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Document text & query text strings concatenated and passed into a cross-encoder which then outputs a rank/score."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Bi-encoders:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Document text passed into an encoder and generates a document embedding"}),"\n",(0,i.jsx)(n.li,{children:"Query text separately passed into an encoder and generates a query embedding"}),"\n",(0,i.jsx)(n.li,{children:"Similarity of query and doc embedding calculated"}),"\n",(0,i.jsx)(n.li,{children:"Retrieval performance can suffer especially on Out-Of-Domain data"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Multi-vector bi-encoder - (eg. ColBERT):"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Functions as a bi-encoder: all documents representations are pre-computed in isolation"}),"\n",(0,i.jsx)(n.li,{children:"Similarity computation occurs between individual query and document token vectors, as opposed to the full document."}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"main-weakness-of-multi-vector-approaches",children:"Main weakness of multi-vector approaches:"}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Storage and memory usage balloons up, each token in a document requires a vector(as opposed to one document = one vector)"}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Complicated to efficiently search through multiple vectors"}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"answerais-proposed-token-pooling-solution",children:"AnswerAI's Proposed Token Pooling Solution:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Main Idea: a lot of the tokens are likely to carry somewhat redundant semantic information, we can semantically cluster them!"}),"\n",(0,i.jsx)(n.li,{children:"Requires no model modification whatsoever, nor any complex processing, while\xa0greatly improving the scalability of easily updatable indexing methods - like HNSW, which are typically harder to use with ColBERT."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.strong,{children:"Approach:"})}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Token pooling by clustering similar tokens within a given document and averaging (mean pooling) their representation."}),"\n",(0,i.jsx)(n.li,{children:"After being pooled, the vectors are then quantised to 2-bits using the ColBERTv2 quantisation approach"}),"\n",(0,i.jsx)(n.li,{children:"Each cluster is represented by a single token by averaging the values of contained tokens"}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"results",children:"Results:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"All results compared to non-pooled ColBERT vector approach"}),"\n",(0,i.jsx)(n.li,{children:"Pooling by a factor 2 achieves a\xa050%\xa0vector count reduction and 100.6% retrieval performance on average."}),"\n",(0,i.jsx)(n.li,{children:"Pool factor = 3 achieves 66%\xa0reduction while reaching\xa099% performance."}),"\n",(0,i.jsx)(n.li,{children:"Pool factor = 4 achieves 75%\xa0reduction while reaching\xa097% performance."}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://github.com/stanford-futuredata/ColBERT",children:"Code"})}),"\n",(0,i.jsx)(n.p,{children:(0,i.jsx)(n.a,{href:"https://www.answer.ai/posts/colbert-pooling.html",children:"Blog"})}),"\n",(0,i.jsx)("p",{children:(0,i.jsx)(a.fd,{link:"https://www.answer.ai/posts/colbert-pooling.html",children:"\ud83d\udd17 Blog Link"})}),"\n","\n",(0,i.jsx)(s.Ay,{})]})}function u(e={}){const{wrapper:n}={...(0,r.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(p,{...e})}):p(e)}},49107(e,n,t){t.d(n,{Ef:()=>g,fd:()=>u,z9:()=>p});var o=t(28774);t(96540);const i="buttons_NqrD",r="left_ej0y",a="right_kFGn",s="btn_VbJ1",l="btnMain_ywTD",c="btnAccent_uqV6",d="btnOutlined_BYrT";var h=t(74848);function p({children:e,link:n,color:t="main",newTab:i=!0,className:r,style:a}){let p=s;switch(t){case"accent":p+=" "+c;break;case"outlined":p+=" "+d;break;default:p+=" "+l}return r&&(p+=" "+r),(0,h.jsx)(o.A,{className:p,style:a,to:n,target:i?"_blank":"_self",children:e})}function u({children:e,link:n,color:t="main",newTab:o=!0}){let i=s;if("accent"===t)i+=" "+c;else i+=" "+l;return(0,h.jsx)("a",{className:i,href:n,download:!0,children:e})}function g({children:e,position:n="center"}){let t=i;switch(n){case"left":t+=" "+r;break;case"right":t+=" "+a}return(0,h.jsx)("div",{className:t,children:e})}},65527(e,n,t){t.d(n,{A:()=>o});const o=t.p+"assets/images/hero-a5b08b51ed431f8240c02023b9622097.png"},70700(e,n,t){t.d(n,{A:()=>o});const o=t.p+"assets/images/hero-a5b08b51ed431f8240c02023b9622097.png"},87695(e){e.exports=JSON.parse('{"permalink":"/papers/colbertpooling","source":"@site/papers/2024-06-30-colbertpooling/index.mdx","title":"Token Pooling to Scale Multi-Vector Retrieval Systems","de
1scription":"Clustering tokens to make ColBERT more efficient and usable with Vector DBs!","date":"2024-06-30T00:00:00.000Z","tags":[],"readingTime":1.87,"hasTruncateMarker":true,"authors":[{"name":"Zain Hasan","title":"Developer Advocate","url":"https://github.com/zainhas","imageURL":"/img/people/icon/zain.jpg","key":"zain","page":null}],"frontMatter":{"title":"Token Pooling to Scale Multi-Vector Retrieval Systems","slug":"colbertpooling","authors":["zain"],"date":"2024-06-30T00:00:00.000Z","tags":[],"image":"./img/hero.png","description":"Clustering tokens to make ColBERT more efficient and usable with Vector DBs!"},"unlisted":false,"prevItem":{"title":"Many-Shot In-Context Learning","permalink":"/papers/manyshoticl"},"nextItem":{"title":"Mixture-of-Agents Enhances Large Language Model Capabilities","permalink":"/papers/moa"}}')}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.