[{"data":1,"prerenderedAt":874},["ShallowReactive",2],{"blog-tag-en-hybrid-search":3},[4,85,161,224,289,341,394,467,516,575,632,681,760,814],{"slug":5,"published":6,"updated":7,"minutes":8,"category":9,"tags":10,"tagPages":16,"keywords":18,"about":29,"sources":38,"cover":75,"og":76,"expertise":77,"locales":78,"lang":79,"title":82,"description":83,"coverAlt":84},"visual-search-shop","2026-10-05","2026-10-17",11,"web",[11,12,13,14,15],"Visual search","Image embeddings","OCR","Part numbers","Hybrid search",[17],"hybrid-search",[19,20,21,22,23,24,25,26,27,28],"visual search for B2B e-commerce","image search product catalog","CLIP SigLIP image embeddings","photo to part number","visual search shop implementation","multimodal embeddings shop","spare part identification AI","OCR part number from photo","image similarity search pgvector","visual add to cart",[30,32,35],{"name":11,"url":31},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVisual_search",{"name":33,"url":34},"Optical character recognition","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOptical_character_recognition",{"name":36,"url":37},"Contrastive learning","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContrastive_learning",[39,42,45,48,51,54,57,60,63,66,69,72],{"title":40,"url":41},"CLIP: Learning Transferable Visual Models From Natural Language Supervision (2021)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.00020",{"title":43,"url":44},"Hugging Face: SigLIP 2 release (2025)","https:\u002F\u002Fhuggingface.co\u002Fblog\u002Fsiglip2",{"title":46,"url":47},"MIEB: Massive Image Embedding Benchmark (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.10471",{"title":49,"url":50},"jina-clip-v2 model card (CC-BY-NC-4.0)","https:\u002F\u002Fhuggingface.co\u002Fjinaai\u002Fjina-clip-v2",{"title":52,"url":53},"pgvector: README","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector",{"title":55,"url":56},"Spryker docs: Search by Image","https:\u002F\u002Fdocs.spryker.com\u002Fdocs\u002Fpbc\u002Fall\u002Fai-commerce\u002Flatest\u002Fsearch-by-image",{"title":58,"url":59},"Spryker docs: Visual Add to Cart","https:\u002F\u002Fdocs.spryker.com\u002Fdocs\u002Fdg\u002Fdev\u002Fai\u002Fai-commerce\u002Fvisual-add-to-cart\u002Fvisual-add-to-cart",{"title":61,"url":62},"Google Cloud: Vision API pricing","https:\u002F\u002Fcloud.google.com\u002Fvision\u002Fpricing",{"title":64,"url":65},"Voyage AI: pricing","https:\u002F\u002Fdocs.voyageai.com\u002Fdocs\u002Fpricing",{"title":67,"url":68},"python-stdnum: EAN, UPC and GTIN module","https:\u002F\u002Farthurdejong.org\u002Fpython-stdnum\u002Fdoc\u002F1.20\u002Fstdnum.ean.html",{"title":70,"url":71},"Elasticsearch: fuzzy query","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Fquery-languages\u002Fquery-dsl\u002Fquery-dsl-fuzzy-query",{"title":73,"url":74},"SymSpell (GitHub)","https:\u002F\u002Fgithub.com\u002Fwolfgarbe\u002FSymSpell","\u002Fimages\u002Fblog\u002Fvisual-search-shop\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fvisual-search-shop\u002Fog.jpg","b2b-ecommerce-developer",[79,80,81],"en","de","hu","Visual search for B2B shops: image embeddings, part numbers and honest limits","Visual search for a B2B shop: image embeddings, OCR of part numbers, image-to-text lookups, hybrid filters, cost and evaluation on your own photos.","Visual search for B2B shops: a camera photographs a part and finds the matching tile in a grid.",{"slug":86,"published":87,"updated":88,"minutes":89,"category":90,"tags":91,"tagPages":96,"keywords":98,"about":109,"sources":117,"cover":154,"og":155,"expertise":156,"locales":157,"lang":79,"title":158,"description":159,"coverAlt":160},"elasticsearch-opensearch-vector-search","2026-09-30","2026-10-01",8,"rag",[92,93,94,15,95],"Elasticsearch","OpenSearch","Vector search","Licensing",[97,17],"vector-search",[99,100,101,102,103,104,105,106,107,108],"vector search in Elasticsearch and OpenSearch","elasticsearch knn vector search","opensearch neural search","hybrid search rrf","elasticsearch bbq better binary quantization","opensearch diskann jvector","elasticsearch agpl license","filtered knn search","elasticsearch vs opensearch vector database","search engine as vector store",[110,112,114],{"name":92,"url":111},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FElasticsearch",{"name":93,"url":113},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOpenSearch_%28software%29",{"name":115,"url":116},"Nearest neighbor search","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNearest_neighbor_search",[118,121,124,127,130,133,136,139,142,145,148,151],{"title":119,"url":120},"Elastic docs: kNN search","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fsolutions\u002Fsearch\u002Fvector\u002Fknn",{"title":122,"url":123},"Elastic docs: filtered kNN search","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fsolutions\u002Fsearch\u002Fvector\u002Fknn\u002Ffiltered-knn-search",{"title":125,"url":126},"Elastic docs: dense_vector field type","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Felasticsearch\u002Fmapping-reference\u002Fdense-vector",{"title":128,"url":129},"Elastic docs: BBQ","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Felasticsearch\u002Fmapping-reference\u002Fbbq",{"title":131,"url":132},"Elastic docs: reciprocal rank fusion","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Felasticsearch\u002Frest-apis\u002Freciprocal-rank-fusion",{"title":134,"url":135},"Elastic docs: GPU vector indexing","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fsolutions\u002Fsearch\u002Fvector\u002Fgpu-vector-indexing",{"title":137,"url":138},"Elastic blog: Elasticsearch is open source again (Aug 2024)","https:\u002F\u002Fwww.elastic.co\u002Fblog\u002Felasticsearch-is-open-source-again",{"title":140,"url":141},"OpenSearch docs: methods and engines","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fmappings\u002Fsupported-field-types\u002Fknn-methods-engines\u002F",{"title":143,"url":144},"OpenSearch docs: memory-optimized vectors","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fmappings\u002Fsupported-field-types\u002Fknn-memory-optimized\u002F",{"title":146,"url":147},"OpenSearch docs: reciprocal rank fusion","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fvector-search\u002Fai-search\u002Fhybrid-search\u002Frrf\u002F",{"title":149,"url":150},"OpenSearch docs: version history","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fversion-history\u002F",{"title":152,"url":153},"AWS Open Source blog: introducing OpenSearch (Apr 2021)","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fopensource\u002Fintroducing-opensearch\u002F","\u002Fimages\u002Fblog\u002Felasticsearch-opensearch-vector-search\u002Fcover.webp","\u002Fimages\u002Fblog\u002Felasticsearch-opensearch-vector-search\u002Fog.jpg","ai-engineer",[79,80,81],"Vector search in Elasticsearch and OpenSearch: kNN, hybrid search and the license story","Vector search in Elasticsearch and OpenSearch: kNN and filters, BBQ and binary quantization, RRF hybrid search, GPU builds, and AGPL vs Apache licensing.","Elasticsearch and OpenSearch kNN: a cabinet with a text drawer and a vector drawer, searched by one magnifying glass.",{"slug":162,"published":163,"updated":88,"minutes":89,"category":90,"tags":164,"tagPages":168,"keywords":169,"about":179,"sources":185,"cover":218,"og":219,"expertise":156,"locales":220,"lang":79,"title":221,"description":222,"coverAlt":223},"turbopuffer","2026-09-29",[162,165,166,167,15],"Vector database","Object storage","Pricing",[17],[162,170,171,172,173,174,175,176,177,178],"turbopuffer pricing","vector search on object storage","serverless vector database","turbopuffer vs pinecone","turbopuffer namespaces","spfresh vector index","hybrid search bm25 vector","per-query vector database pricing","object storage vector database",[180,182,184],{"name":165,"url":181},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVector_database",{"name":166,"url":183},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObject_storage",{"name":115,"url":116},[186,189,192,195,198,201,204,207,209,212,215],{"title":187,"url":188},"turbopuffer blog: turbopuffer (updated Mar 2026)","https:\u002F\u002Fturbopuffer.com\u002Fblog\u002Fturbopuffer",{"title":190,"url":191},"turbopuffer blog: ANN v3 (Jan 2026)","https:\u002F\u002Fturbopuffer.com\u002Fblog\u002Fann-v3",{"title":193,"url":194},"SPFresh (SOSP 2023)","https:\u002F\u002Fdl.acm.org\u002Fdoi\u002F10.1145\u002F3600006.3613166",{"title":196,"url":197},"turbopuffer blog: native filtering","https:\u002F\u002Fturbopuffer.com\u002Fblog\u002Fnative-filtering",{"title":199,"url":200},"turbopuffer docs: hybrid search","https:\u002F\u002Fturbopuffer.com\u002Fdocs\u002Fhybrid",{"title":202,"url":203},"turbopuffer blog: native embedding (Sep 2026)","https:\u002F\u002Fturbopuffer.com\u002Fblog\u002Fnative-embedding",{"title":205,"url":206},"turbopuffer docs: architecture","https:\u002F\u002Fturbopuffer.com\u002Fdocs\u002Farchitecture",{"title":170,"url":208},"https:\u002F\u002Fturbopuffer.com\u002Fpricing",{"title":210,"url":211},"turbopuffer docs: limits","https:\u002F\u002Fturbopuffer.com\u002Fdocs\u002Flimits",{"title":213,"url":214},"turbopuffer v3 benchmarks","https:\u002F\u002Fturbopuffer.com\u002Fv3",{"title":216,"url":217},"Pinecone pricing","https:\u002F\u002Fwww.pinecone.io\u002Fpricing\u002F","\u002Fimages\u002Fblog\u002Fturbopuffer\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fturbopuffer\u002Fog.jpg",[79,80,81],"turbopuffer review: vector search built on object storage, and what it costs per query","turbopuffer reviewed: object storage as the source of truth, SPFresh and RaBitQ, hybrid search, per-GB pricing against Pinecone, and when it wins.","turbopuffer review: a large storage bucket below and a small cache tray above that pulls up a few cards.",{"slug":225,"published":226,"updated":88,"minutes":89,"category":90,"tags":227,"tagPages":231,"keywords":232,"about":242,"sources":252,"cover":283,"og":284,"expertise":156,"locales":285,"lang":79,"title":286,"description":287,"coverAlt":288},"splade-learned-sparse-retrieval","2026-09-28",[228,229,230,15,92],"SPLADE","Sparse retrieval","BM25",[17],[233,228,234,235,236,237,238,239,240,241],"learned sparse retrieval","SPLADE++ vs BM25","neural sparse search","Elasticsearch sparse_vector","ELSER","rank_features","OpenSearch neural sparse","learned sparse retrieval index size","sentence-transformers sparse encoder",[243,246,249],{"name":244,"url":245},"Okapi BM25","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOkapi_BM25",{"name":247,"url":248},"Inverted index","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FInverted_index",{"name":250,"url":251},"BERT (language model)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBERT_%28language_model%29",[253,256,259,262,265,268,271,274,277,280],{"title":254,"url":255},"naver\u002Fsplade on GitHub","https:\u002F\u002Fgithub.com\u002Fnaver\u002Fsplade",{"title":257,"url":258},"SPLADE++ (arXiv 2205.04733)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2205.04733",{"title":260,"url":261},"naver\u002Fsplade-v3 model card","https:\u002F\u002Fhuggingface.co\u002Fnaver\u002Fsplade-v3",{"title":263,"url":264},"Static pruning for learned sparse indexes (arXiv 2304.12702)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2304.12702",{"title":266,"url":267},"OpenSearch blog: faster semantic sparse retrieval in 2.12","https:\u002F\u002Fopensearch.org\u002Fblog\u002FA-deep-dive-into-faster-semantic-sparse-retrieval-in-os-2-12\u002F",{"title":269,"url":270},"OpenSearch docs: sparse encoding processor","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fingest-pipelines\u002Fprocessors\u002Fsparse-encoding\u002F",{"title":272,"url":273},"Elastic docs: sparse_vector field type","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Felasticsearch\u002Fmapping-reference\u002Fsparse-vector",{"title":275,"url":276},"Elastic docs: ELSER","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fexplore-analyze\u002Fmachine-learning\u002Fnlp\u002Fml-nlp-elser",{"title":278,"url":279},"Elastic Search Labs: ELSER v2, part 2","https:\u002F\u002Fwww.elastic.co\u002Fsearch-labs\u002Fblog\u002Fintroducing-elser-v2-part-2",{"title":281,"url":282},"Sentence Transformers: sparse encoder usage","https:\u002F\u002Fsbert.net\u002Fdocs\u002Fsparse_encoder\u002Fusage\u002Fusage.html","\u002Fimages\u002Fblog\u002Fsplade-learned-sparse-retrieval\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fsplade-learned-sparse-retrieval\u002Fog.jpg",[79,80,81],"SPLADE and learned sparse retrieval in practice: BM25, index size, latency","Learned sparse retrieval in practice: how SPLADE expands terms, models and licenses, index size and latency, engine support and when it beats BM25.","SPLADE learned sparse retrieval: a word strip fans out into many thin bars, a few tall ones feeding an index box.",{"slug":290,"published":291,"updated":292,"minutes":293,"category":90,"tags":294,"tagPages":297,"keywords":298,"about":305,"sources":310,"cover":335,"og":336,"expertise":156,"locales":337,"lang":79,"title":338,"description":339,"coverAlt":340},"lancedb","2026-09-21","2026-10-07",9,[94,15,295,296],"Embedded database","RAG",[97,17,90],[290,299,300,301,302,102,303,304],"lancedb review","lance vector database","embedded vector database","lancedb vs qdrant","lancedb indexing","lance data format",[306,307],{"name":165,"url":181},{"name":308,"url":309},"Apache Arrow","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FApache_Arrow",[311,314,317,320,323,326,329,332],{"title":312,"url":313},"LanceDB quickstart","https:\u002F\u002Fdocs.lancedb.com\u002Fquickstart",{"title":315,"url":316},"LanceDB vector indexes","https:\u002F\u002Fdocs.lancedb.com\u002Findexing\u002Fvector-index",{"title":318,"url":319},"LanceDB indexing guide","https:\u002F\u002Fdocs.lancedb.com\u002Findexing\u002Findex",{"title":321,"url":322},"LanceDB hybrid search","https:\u002F\u002Fdocs.lancedb.com\u002Fsearch\u002Fhybrid-search",{"title":324,"url":325},"LanceDB Enterprise","https:\u002F\u002Fdocs.lancedb.com\u002Fenterprise",{"title":327,"url":328},"LanceDB frequently asked questions","https:\u002F\u002Fdocs.lancedb.com\u002Ffaq\u002Ffaq-oss",{"title":330,"url":331},"LanceDB pricing","https:\u002F\u002Flancedb.com\u002Fpricing",{"title":333,"url":334},"LanceDB on PyPI","https:\u002F\u002Fpypi.org\u002Fproject\u002Flancedb\u002F","\u002Fimages\u002Fblog\u002Flancedb\u002Fcover.webp","\u002Fimages\u002Fblog\u002Flancedb\u002Fog.jpg",[79,80,81],"LanceDB: vector search that starts as a library","LanceDB review: an Apache-2.0 embedded vector library with IVF and HNSW index choices, hybrid search with rank fusion, and what the Enterprise tier adds.","LanceDB vector search: shelves of sorted marbles pop up from an open book on a desk.",{"slug":342,"published":343,"updated":344,"minutes":345,"category":90,"tags":346,"tagPages":349,"keywords":350,"about":359,"sources":369,"cover":388,"og":389,"expertise":156,"locales":390,"lang":79,"title":391,"description":392,"coverAlt":393},"milvus-zilliz","2026-09-08","2026-09-20",10,[94,15,347,348,296],"BM25 full text","Distributed",[97,17,90],[351,352,353,354,355,356,357,358],"milvus","milvus vs qdrant","zilliz cloud pricing","vector database comparison","milvus hybrid search","apache milvus self-hosting","milvus 3.0","rag vector store",[360,363,366],{"name":361,"url":362},"Milvus","https:\u002F\u002Fmilvus.io",{"name":364,"url":365},"Zilliz Cloud","https:\u002F\u002Fzilliz.com",{"name":367,"url":368},"Retrieval-augmented generation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRetrieval-augmented_generation",[370,373,376,379,382,385],{"title":371,"url":372},"Milvus architecture overview","https:\u002F\u002Fmilvus.io\u002Fdocs\u002Farchitecture_overview.md",{"title":374,"url":375},"Milvus release notes","https:\u002F\u002Fmilvus.io\u002Fdocs\u002Frelease_notes.md",{"title":377,"url":378},"Milvus releases on GitHub","https:\u002F\u002Fgithub.com\u002Fmilvus-io\u002Fmilvus\u002Freleases",{"title":380,"url":381},"Milvus README: features and licence","https:\u002F\u002Fgithub.com\u002Fmilvus-io\u002Fmilvus",{"title":383,"url":384},"Zilliz Cloud pricing","https:\u002F\u002Fzilliz.com\u002Fpricing",{"title":386,"url":387},"Zilliz Cloud list price","https:\u002F\u002Fzilliz.com\u002Fpricing\u002Fpricing-guide","\u002Fimages\u002Fblog\u002Fmilvus-zilliz\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fmilvus-zilliz\u002Fog.jpg",[79,80,81],"Milvus review: the most complete vector database to operate","Milvus 3.0.2 is the most complete open-source vector database and the heaviest to run: architecture, hybrid search, costs, and where not to use it.","Milvus review: a warehouse with tall racks and a forklift, a worker with a wrench at a dial panel.",{"slug":395,"published":396,"updated":397,"minutes":398,"category":90,"tags":399,"tagPages":403,"keywords":404,"about":415,"sources":421,"cover":461,"og":462,"expertise":77,"locales":463,"lang":79,"title":464,"description":465,"coverAlt":466},"semantic-product-search-b2b","2026-08-21","2026-09-17",13,[400,15,401,402,93],"B2B search","Semantic search","Spryker",[17],[405,406,407,408,409,410,411,412,413,414],"semantic product search B2B","B2B ecommerce search","hybrid search BM25 vector","part number search ecommerce","Spryker search Elasticsearch","OpenSearch hybrid search RRF","multilingual product search German English Hungarian","zero results rate site search","LLM query understanding ecommerce","AI product search for B2B shops",[416,418,419],{"name":401,"url":417},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSemantic_search",{"name":92,"url":111},{"name":93,"url":420},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOpenSearch",[422,425,428,431,434,437,440,443,446,449,452,455,458],{"title":423,"url":424},"Baymard Institute: E-commerce search query types","https:\u002F\u002Fbaymard.com\u002Fblog\u002Fecommerce-search-query-types",{"title":426,"url":427},"Elastic Search Labs: Hybrid search in Elasticsearch","https:\u002F\u002Fwww.elastic.co\u002Fsearch-labs\u002Fblog\u002Fhybrid-search-elasticsearch",{"title":429,"url":430},"Elasticsearch documentation: kNN query (pre-filters and post-filters)","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Fquery-languages\u002Fquery-dsl\u002Fquery-dsl-knn-query",{"title":432,"url":433},"Elasticsearch documentation: Semantic reranking","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fsolutions\u002Fsearch\u002Franking\u002Fsemantic-reranking",{"title":435,"url":436},"Elasticsearch documentation: Word delimiter graph token filter","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Ftext-analysis\u002Fanalysis-word-delimiter-graph-tokenfilter",{"title":438,"url":439},"Elasticsearch documentation: Synonym graph token filter","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Ftext-analysis\u002Fanalysis-synonym-graph-tokenfilter",{"title":441,"url":442},"OpenSearch documentation: Score ranker processor (RRF)","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fsearch-plugins\u002Fsearch-pipelines\u002Fscore-ranker-processor\u002F",{"title":444,"url":445},"OpenSearch documentation: Normalization processor","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fsearch-plugins\u002Fsearch-pipelines\u002Fnormalization-processor\u002F",{"title":447,"url":448},"Spryker documentation: Search feature overview","https:\u002F\u002Fdocs.spryker.com\u002Fdocs\u002Fpbc\u002Fall\u002Fsearch\u002Flatest\u002Fbase-shop\u002Fsearch-feature-overview\u002Fsearch-feature-overview",{"title":450,"url":451},"Spryker documentation: Migrate from OpenSearch 1.3 to 3.5","https:\u002F\u002Fdocs.spryker.com\u002Fdocs\u002Fpbc\u002Fall\u002Fsearch\u002Flatest\u002Fbase-shop\u002Finstall-and-upgrade\u002Fmigrate-from-opensearch-1.3-to-3.5.html",{"title":453,"url":454},"Instacart via ZenML: Rebuilding query understanding for e-commerce search with LLMs","https:\u002F\u002Fwww.zenml.io\u002Fllmops-database\u002Frebuilding-query-understanding-for-e-commerce-search-with-llms",{"title":456,"url":457},"arXiv: M3-Embedding, multilingual, multi-functionality, multi-granularity text embeddings","https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.03216",{"title":459,"url":460},"Algolia documentation: Search analytics metrics","https:\u002F\u002Fwww.algolia.com\u002Fdoc\u002Fguides\u002Fsearch-analytics\u002Fconcepts\u002Fmetrics\u002F","\u002Fimages\u002Fblog\u002Fsemantic-product-search-b2b\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fsemantic-product-search-b2b\u002Fog.jpg",[79,80,81],"Semantic product search for B2B shops: part numbers, hybrid retrieval and what to measure","Semantic search for B2B shops without breaking part-number search: hybrid BM25 and vectors, filters, DE\u002FEN\u002FHU, LLM query parsing, reranking and metrics.","Semantic product search for B2B shops: a magnifier hovers over a bin of screws on a hardware store shelf.",{"slug":468,"published":469,"updated":470,"minutes":89,"category":90,"tags":471,"tagPages":475,"keywords":476,"about":485,"sources":491,"cover":510,"og":511,"expertise":156,"locales":512,"lang":79,"title":513,"description":514,"coverAlt":515},"rag-2026-hybrid-agentic-long-context","2026-07-30","2026-09-22",[296,472,473,15,474],"Long context","Agentic search","Contextual retrieval",[90,17],[477,478,479,480,481,482,483,484],"RAG in 2026","long context vs RAG","agentic RAG","hybrid search","contextual retrieval","is RAG dead","agentic search vs vector search","RAG vs 1M token context window",[486,487,490],{"name":367,"url":368},{"name":488,"url":489},"Large language model","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model",{"name":244,"url":245},[492,495,498,501,504,507],{"title":493,"url":494},"Anthropic: Introducing Contextual Retrieval","https:\u002F\u002Fwww.anthropic.com\u002Fnews\u002Fcontextual-retrieval",{"title":496,"url":497},"Chroma: Context Rot","https:\u002F\u002Fwww.trychroma.com\u002Fresearch\u002Fcontext-rot",{"title":499,"url":500},"Liu et al., Lost in the Middle (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":502,"url":503},"Claude docs: Pricing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fabout-claude\u002Fpricing",{"title":505,"url":506},"Claude docs: Models overview","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fabout-claude\u002Fmodels\u002Foverview",{"title":508,"url":509},"Awesome Agentic Patterns: Agentic search over vector embeddings","https:\u002F\u002Fgithub.com\u002Fnibzard\u002Fawesome-agentic-patterns\u002Fblob\u002Fmain\u002Fpatterns\u002Fagentic-search-over-vector-embeddings.md","\u002Fimages\u002Fblog\u002Frag-2026-hybrid-agentic-long-context\u002Fcover.webp","\u002Fimages\u002Fblog\u002Frag-2026-hybrid-agentic-long-context\u002Fog.jpg",[79,80,81],"RAG in 2026: hybrid retrieval, agentic search, or just a 1M-token context?","RAG in 2026: when a cached 1M-token context beats retrieval, when hybrid search still wins, when agentic search fits, and what each costs per request.","RAG in 2026: a person chooses between paths to a library shelf, a robot with a flashlight and a long scroll.",{"slug":517,"published":518,"updated":469,"minutes":345,"category":90,"tags":519,"tagPages":523,"keywords":524,"about":533,"sources":537,"cover":569,"og":570,"expertise":156,"locales":571,"lang":79,"title":572,"description":573,"coverAlt":574},"rag-pipeline-chunking-hybrid-search-reranking","2026-07-24",[296,15,520,521,522],"Chunking","Reranking","pgvector",[90,17],[525,526,527,407,528,529,530,531,532],"RAG pipeline","retrieval-augmented generation pipeline","chunking strategy for RAG","reciprocal rank fusion","cross-encoder reranking","pgvector hybrid search","RAG evaluation metrics","how to build a RAG pipeline",[534,535,536],{"name":367,"url":368},{"name":244,"url":245},{"name":522,"url":53},[538,541,544,547,549,552,555,558,559,562,563,566],{"title":539,"url":540},"Lewis et al., Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2005.11401",{"title":542,"url":543},"Cormack, Clarke and Büttcher, Reciprocal Rank Fusion (SIGIR 2009)","https:\u002F\u002Fcormack.uwaterloo.ca\u002Fcormacksigir09-rrf.pdf",{"title":545,"url":546},"Malkov and Yashunin, HNSW graphs","https:\u002F\u002Farxiv.org\u002Fabs\u002F1603.09320",{"title":548,"url":53},"pgvector README",{"title":550,"url":551},"Elasticsearch: similarity settings","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Freference\u002Felasticsearch\u002Findex-settings\u002Fsimilarity",{"title":553,"url":554},"PostgreSQL: controlling text search","https:\u002F\u002Fwww.postgresql.org\u002Fdocs\u002Fcurrent\u002Ftextsearch-controls.html",{"title":556,"url":557},"Chroma: Evaluating Chunking Strategies for Retrieval","https:\u002F\u002Fwww.trychroma.com\u002Fresearch\u002Fevaluating-chunking",{"title":493,"url":494},{"title":560,"url":561},"Sentence Transformers: Cross-Encoders","https:\u002F\u002Fsbert.net\u002Fexamples\u002Fcross_encoder\u002Fapplications\u002FREADME.html",{"title":499,"url":500},{"title":564,"url":565},"Claude docs: Citations","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcitations",{"title":567,"url":568},"RAGAS: Faithfulness","https:\u002F\u002Fdocs.ragas.io\u002Fen\u002Fstable\u002Fconcepts\u002Fmetrics\u002Favailable_metrics\u002Ffaithfulness\u002F","\u002Fimages\u002Fblog\u002Frag-pipeline-chunking-hybrid-search-reranking\u002Fcover.webp","\u002Fimages\u002Fblog\u002Frag-pipeline-chunking-hybrid-search-reranking\u002Fog.jpg",[79,80,81],"A production RAG pipeline, step by step: chunking, hybrid search and reranking","RAG pipeline step by step: parsing, chunking, pgvector, BM25 and vectors fused with Reciprocal Rank Fusion, reranking, citations and retrieval evals.","RAG pipeline, step by step: a loaf is sliced, the slices go through a sieve and land in a neat row on a plate.",{"slug":576,"published":577,"minutes":345,"category":90,"tags":578,"tagPages":581,"keywords":583,"about":591,"sources":598,"cover":626,"og":627,"expertise":156,"locales":628,"lang":79,"title":629,"description":630,"coverAlt":631},"chroma","2026-07-20",[94,579,296,15,580],"Embeddings","Metadata filter",[97,582,90,17],"embeddings",[584,585,586,587,588,589,590],"chroma vector database","chroma vs qdrant","chroma vs pgvector","hybrid search reciprocal rank fusion","self-hosted vector database","chroma cloud pricing","metadata filtering vector search",[592,595],{"name":593,"url":594},"Chroma","https:\u002F\u002Fgithub.com\u002Fchroma-core\u002Fchroma",{"name":596,"url":597},"Apache License 2.0","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FApache_License",[599,602,605,608,611,614,617,620,623],{"title":600,"url":601},"Chroma documentation: introduction","https:\u002F\u002Fdocs.trychroma.com\u002Fdocs\u002Foverview\u002Fintroduction",{"title":603,"url":604},"Chroma architecture overview","https:\u002F\u002Fdocs.trychroma.com\u002Freference\u002Farchitecture\u002Foverview",{"title":606,"url":607},"Chroma: getting started with the SDK","https:\u002F\u002Fdocs.trychroma.com\u002Fdocs\u002Foverview\u002Fgetting-started",{"title":609,"url":610},"Chroma: query and get","https:\u002F\u002Fdocs.trychroma.com\u002Fdocs\u002Fquerying-collections\u002Fquery-and-get",{"title":612,"url":613},"Chroma: metadata filtering","https:\u002F\u002Fdocs.trychroma.com\u002Fdocs\u002Fquerying-collections\u002Fmetadata-filtering",{"title":615,"url":616},"Chroma Cloud: Search API overview","https:\u002F\u002Fdocs.trychroma.com\u002Fcloud\u002Fsearch-api\u002Foverview",{"title":618,"url":619},"Chroma Cloud: hybrid search with RRF","https:\u002F\u002Fdocs.trychroma.com\u002Fcloud\u002Fsearch-api\u002Fhybrid-search",{"title":621,"url":622},"Chroma Cloud: pricing","https:\u002F\u002Fwww.trychroma.com\u002Fpricing",{"title":624,"url":625},"Chroma changelog","https:\u002F\u002Fwww.trychroma.com\u002Fchangelog","\u002Fimages\u002Fblog\u002Fchroma\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fchroma\u002Fog.jpg",[79,80,81],"Chroma: simple vector search with one catch","Chroma is an Apache-2.0 vector database for embedded, single-node or cloud use. Where it is pleasant, and where its best search is cloud-only.","Chroma vector search: a drawer cabinet sorts round marbles, with one cracked pebble on top.",{"slug":633,"published":634,"minutes":8,"category":90,"tags":635,"tagPages":637,"keywords":638,"about":647,"sources":651,"cover":675,"og":676,"expertise":156,"locales":677,"lang":79,"title":678,"description":679,"coverAlt":680},"pinecone","2026-07-09",[94,579,296,636,15],"Namespaces",[97,582,90,17],[639,640,641,642,643,644,645,646],"pinecone vector database","pinecone pricing","pinecone read units","pinecone namespaces","pinecone vs qdrant","pinecone vs pgvector","pinecone documents api","serverless vector database cost",[648,649,650],{"name":165,"url":181},{"name":115,"url":116},{"name":244,"url":245},[652,655,658,661,664,666,669,672],{"title":653,"url":654},"Pinecone docs: Index data overview, indexes, namespaces and metadata","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Findexing-overview",{"title":656,"url":657},"Pinecone docs: Adopt the Documents API, API version 2026-07","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Fadopt-the-documents-api",{"title":659,"url":660},"Pinecone docs: Create an index, schemas, regions and metrics","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Fcreate-an-index",{"title":662,"url":663},"Pinecone docs: Understanding Pinecone cost, read units, write units and egress","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Forganizations\u002Fmanage-cost\u002Funderstanding-cost",{"title":665,"url":217},"Pinecone pricing: plans, limits and rates",{"title":667,"url":668},"Pinecone docs: Semantic search","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Fsearch\u002Fsemantic-search",{"title":670,"url":671},"Pinecone docs: Local development with Pinecone Local","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Foperations\u002Flocal-development",{"title":673,"url":674},"Pinecone docs: 2026 release notes","https:\u002F\u002Fdocs.pinecone.io\u002Frelease-notes\u002F2026","\u002Fimages\u002Fblog\u002Fpinecone\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fpinecone\u002Fog.jpg",[79,80,81],"Pinecone: a review of the managed vector database","Pinecone review: read units scale with namespace size, schemas are fixed at creation, and when self-hosting is the better buy.","Pinecone review: a pine cone on a cloud holds marbles between its scales, a key hanging below.",{"slug":682,"published":683,"updated":88,"minutes":398,"category":90,"tags":684,"tagPages":687,"keywords":688,"about":699,"sources":705,"cover":754,"og":755,"expertise":156,"locales":756,"lang":79,"title":757,"description":758,"coverAlt":759},"pgvector-vs-vector-databases","2026-06-15",[522,685,296,15,686],"Vector databases","EU hosting",[90,17],[689,690,691,692,693,694,695,696,697,698],"pgvector vs vector database","pgvector vs Qdrant","pgvector vs Pinecone","best vector database 2026","pgvector HNSW iterative scan","pgvector halfvec","OpenSearch vs Elasticsearch vector search","vector database EU hosting","hybrid search Postgres","Weaviate vs Milvus",[700,701,704],{"name":165,"url":181},{"name":702,"url":703},"PostgreSQL","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPostgreSQL",{"name":367,"url":368},[706,709,712,715,718,721,724,727,730,733,736,739,741,743,746,749,751],{"title":707,"url":708},"pgvector README (index limits, HNSW defaults, iterative scans, filtering, halfvec)","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector\u002Fblob\u002Fmaster\u002FREADME.md",{"title":710,"url":711},"pgvector CHANGELOG (0.4.0 to 0.8.7)","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector\u002Fblob\u002Fmaster\u002FCHANGELOG.md",{"title":713,"url":714},"pgvectorscale: StreamingDiskANN, statistical binary quantization, filtered search","https:\u002F\u002Fgithub.com\u002Ftimescale\u002Fpgvectorscale",{"title":716,"url":717},"Qdrant documentation: Filtering","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fconcepts\u002Ffiltering\u002F",{"title":719,"url":720},"Qdrant documentation: Hybrid queries","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fconcepts\u002Fhybrid-queries\u002F",{"title":722,"url":723},"Qdrant documentation: Create a cluster (providers, free tier, Hybrid Cloud)","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fcloud\u002Fcreate-cluster\u002F",{"title":725,"url":726},"Weaviate documentation: Hybrid search","https:\u002F\u002Fdocs.weaviate.io\u002Fweaviate\u002Fconcepts\u002Fsearch\u002Fhybrid-search",{"title":728,"url":729},"Weaviate documentation: Vector index types","https:\u002F\u002Fdocs.weaviate.io\u002Fweaviate\u002Fconcepts\u002Fvector-index",{"title":731,"url":732},"Weaviate Cloud pricing and deployment options","https:\u002F\u002Fweaviate.io\u002Fpricing",{"title":734,"url":735},"Milvus documentation: Overview","https:\u002F\u002Fmilvus.io\u002Fdocs\u002Foverview.md",{"title":737,"url":738},"Pinecone documentation: Database architecture","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Fget-started\u002Fdatabase-architecture",{"title":740,"url":660},"Pinecone documentation: Create an index (clouds, regions, sparse and hybrid)",{"title":742,"url":141},"OpenSearch documentation: Methods and engines",{"title":744,"url":745},"OpenSearch documentation: Efficient k-NN filtering","https:\u002F\u002Fdocs.opensearch.org\u002Flatest\u002Fvector-search\u002Ffilter-search-knn\u002Fefficient-knn-filtering\u002F",{"title":747,"url":748},"Elasticsearch documentation: Dense vector search","https:\u002F\u002Fwww.elastic.co\u002Fdocs\u002Fsolutions\u002Fsearch\u002Fvector\u002Fdense-vector",{"title":750,"url":430},"Elasticsearch documentation: kNN query (filter as pre-filter)",{"title":752,"url":753},"GitHub releases: Qdrant, Weaviate, Milvus, OpenSearch, pgvectorscale (versions as of 1 October 2026)","https:\u002F\u002Fgithub.com\u002Fqdrant\u002Fqdrant\u002Freleases","\u002Fimages\u002Fblog\u002Fpgvector-vs-vector-databases\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fpgvector-vs-vector-databases\u002Fog.jpg",[79,80,81],"pgvector or a vector database? How to choose vector storage in 2026","pgvector, Qdrant, Weaviate, Milvus, Pinecone, OpenSearch or Elasticsearch? A practical 2026 guide to filtering, hybrid search, scale, cost and EU hosting.","pgvector or a vector database: a person at a fork chooses between an elephant with drawers and a tall warehouse.",{"slug":761,"published":762,"updated":292,"minutes":345,"category":90,"tags":763,"tagPages":767,"keywords":768,"about":776,"sources":785,"cover":808,"og":809,"expertise":156,"locales":810,"lang":79,"title":811,"description":812,"coverAlt":813},"weaviate","2026-06-02",[94,15,764,765,766],"HNSW","Quantization","Multi-tenancy",[97,17],[769,770,771,772,773,774,354,775],"weaviate vector database","weaviate vs qdrant","weaviate vs pinecone","weaviate vs pgvector","hnsw vs hfresh","weaviate cloud pricing","weaviate hybrid search",[777,780,782],{"name":778,"url":779},"Weaviate","https:\u002F\u002Fgithub.com\u002Fweaviate\u002Fweaviate",{"name":781,"url":116},"Hierarchical Navigable Small World",{"name":783,"url":784},"SPFresh","https:\u002F\u002Farxiv.org\u002Fpdf\u002F2410.14452",[786,788,791,794,797,800,802,805],{"title":787,"url":729},"Weaviate documentation: Vector indexing",{"title":789,"url":790},"Weaviate documentation: ANN benchmark","https:\u002F\u002Fdocs.weaviate.io\u002Fweaviate\u002Fbenchmarks\u002Fann",{"title":792,"url":793},"Weaviate 1.39 release notes","https:\u002F\u002Fweaviate.io\u002Fblog\u002Fweaviate-1-39-release",{"title":795,"url":796},"Weaviate 1.38 release notes","https:\u002F\u002Fweaviate.io\u002Fblog\u002Fweaviate-1-38-release",{"title":798,"url":799},"Weaviate documentation: MCP server","https:\u002F\u002Fdocs.weaviate.io\u002Fweaviate\u002Fconfiguration\u002Fmcp-server",{"title":801,"url":732},"Weaviate Cloud pricing",{"title":803,"url":804},"weaviate\u002Fweaviate: LICENSE","https:\u002F\u002Fgithub.com\u002Fweaviate\u002Fweaviate\u002Fblob\u002Fmain\u002FLICENSE",{"title":806,"url":807},"weaviate\u002Fweaviate v1.40.0 release notes","https:\u002F\u002Fgithub.com\u002Fweaviate\u002Fweaviate\u002Freleases\u002Ftag\u002Fv1.40.0","\u002Fimages\u002Fblog\u002Fweaviate\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fweaviate\u002Fog.jpg",[79,80,81],"Weaviate: a vector database that has to win on search, not only on similarity","Weaviate: hybrid BM25 and vector search in one query, HNSW and disk-based HFresh, quantisation, a built-in MCP server, and what licence keys now cover.","Weaviate vector database: a magnet and a magnifier cross over a pile of marbles, a few clinging to the magnet.",{"slug":815,"published":816,"updated":6,"minutes":345,"category":90,"tags":817,"tagPages":820,"keywords":821,"about":826,"sources":830,"cover":868,"og":869,"expertise":156,"locales":870,"lang":79,"title":871,"description":872,"coverAlt":873},"qdrant","2026-05-26",[94,764,818,15,819],"Quantisation","Filtering",[97,17],[815,822,354,823,824,825,102,358],"qdrant vs pinecone","hnsw index","filtered vector search","vector quantisation",[827,828,829],{"name":165,"url":181},{"name":115,"url":116},{"name":367,"url":368},[831,834,837,840,843,846,849,852,854,856,859,862,865],{"title":832,"url":833},"Qdrant documentation","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002F",{"title":835,"url":836},"Qdrant: points","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fmanage-data\u002Fpoints\u002F",{"title":838,"url":839},"Qdrant: collections","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fconcepts\u002Fcollections\u002F",{"title":841,"url":842},"Qdrant: indexing","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fmanage-data\u002Findexing\u002F",{"title":844,"url":845},"Qdrant: quantisation","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fmanage-data\u002Fquantization\u002F",{"title":847,"url":848},"Qdrant: capacity planning","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fcapacity-planning\u002F",{"title":850,"url":851},"Qdrant: optimise performance","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fops-optimization\u002Foptimize\u002F",{"title":853,"url":720},"Qdrant: hybrid and multi-stage queries",{"title":855,"url":717},"Qdrant: filtering",{"title":857,"url":858},"Qdrant: security and access control","https:\u002F\u002Fqdrant.tech\u002Fdocumentation\u002Fsecurity\u002F",{"title":860,"url":861},"Qdrant pricing","https:\u002F\u002Fqdrant.tech\u002Fpricing\u002F",{"title":863,"url":864},"Qdrant on GitHub","https:\u002F\u002Fgithub.com\u002Fqdrant\u002Fqdrant",{"title":866,"url":867},"Qdrant vector search benchmarks","https:\u002F\u002Fqdrant.tech\u002Fbenchmarks\u002F","\u002Fimages\u002Fblog\u002Fqdrant\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fqdrant\u002Fog.jpg",[79,80,81],"Qdrant: a vector database built around filtering","A review of Qdrant: filterable HNSW, four quantisation methods, the memory tiers in v1.19 and the operations nobody publishes any more.","Qdrant vector database: a layered sieve sorts marbles into a bowl.",1793451238663]