[{"data":1,"prerenderedAt":682},["ShallowReactive",2],{"tool-lancedb-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":13,"about":21,"sources":28,"cover":53,"og":54,"expertise":55,"locales":56,"lang":57,"title":60,"description":61,"coverAlt":62,"url":63,"pricing":64,"kind":23,"metaTitle":65,"takeaways":66,"faq":72,"toc":85,"blocks":110,"others":490},"lancedb","2026-09-21",9,"rag",[9,10,11,12],"Vector search","Hybrid search","Embedded database","RAG",[4,14,15,16,17,18,19,20],"lancedb review","lance vector database","embedded vector database","lancedb vs qdrant","hybrid search rrf","lancedb indexing","lance data format",[22,25],{"name":23,"url":24},"Vector database","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVector_database",{"name":26,"url":27},"Apache Arrow","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FApache_Arrow",[29,32,35,38,41,44,47,50],{"title":30,"url":31},"LanceDB quickstart","https:\u002F\u002Fdocs.lancedb.com\u002Fquickstart",{"title":33,"url":34},"LanceDB vector indexes","https:\u002F\u002Fdocs.lancedb.com\u002Findexing\u002Fvector-index",{"title":36,"url":37},"LanceDB indexing guide","https:\u002F\u002Fdocs.lancedb.com\u002Findexing\u002Findex",{"title":39,"url":40},"LanceDB hybrid search","https:\u002F\u002Fdocs.lancedb.com\u002Fsearch\u002Fhybrid-search",{"title":42,"url":43},"LanceDB Enterprise","https:\u002F\u002Fdocs.lancedb.com\u002Fenterprise",{"title":45,"url":46},"LanceDB frequently asked questions","https:\u002F\u002Fdocs.lancedb.com\u002Ffaq\u002Ffaq-oss",{"title":48,"url":49},"LanceDB pricing","https:\u002F\u002Flancedb.com\u002Fpricing",{"title":51,"url":52},"LanceDB on PyPI","https:\u002F\u002Fpypi.org\u002Fproject\u002Flancedb\u002F","\u002Fimages\u002Fblog\u002Flancedb\u002Fcover.webp","\u002Fimages\u002Fblog\u002Flancedb\u002Fog.jpg","ai-engineer",[57,58,59],"en","de","hu","LanceDB: vector search that starts as a library","A review of LanceDB: an Apache-2.0 embedded vector library, its IVF and HNSW index choices, hybrid search with rank fusion, and what the Enterprise tier adds.","Cover art for the LanceDB review: one Lance table feeding a vector index and a full-text index into a fused ranking","https:\u002F\u002Flancedb.com","Apache-2.0 · Cloud paid","LanceDB review: embedded vector database · Balázs Csorba",[67,68,69,70,71],"LanceDB 0.40.0, published 7 October 2026, is an Apache-2.0 Rust library embedded in the application process, with Python, JavaScript and Rust clients and no server to run.","Below roughly a million rows a vector index is optional: the vendor's FAQ measures 100,000 pairs of 1,000-dimensional vectors at under 20 ms and recommends skipping the index for small tables.","HNSW is not a top-level index here — it exists only inside IVF partitions — and the docs warn that HNSW-backed indexes show higher latency variance under metadata filters.","Hybrid search is the strongest feature: BM25 full-text search and vector search merged by a reciprocal rank fusion reranker, with prefiltering on by default.","The vendor's own comparison puts the open-source build at 10 to 50 queries per second and 500 to 1,000 ms from object storage, against up to 10,000 queries and 50 to 200 ms on Enterprise.",[73,76,79,82],{"q":74,"a":75},"Do I need a vector index in LanceDB?","Not at first. The FAQ puts brute-force search at under 20 ms for 100,000 pairs of 1,000-dimensional vectors and says a vector index becomes worthwhile beyond roughly one million rows or higher dimensions; below that, scanning is usually fast enough.",{"q":77,"a":78},"Why is there no plain HNSW index?","In LanceDB, HNSW is a substructure inside IVF partitions rather than a top-level index, which combines IVF scalability with HNSW recall. The available types are IVF_HNSW_FLAT, IVF_HNSW_PQ and IVF_HNSW_SQ, alongside the unquantised and quantised IVF variants.",{"q":80,"a":81},"How do you keep an index healthy in the open-source build?","Index builds run asynchronously and appended rows stay outside the index until they are folded in with optimize(). create_index returns immediately, wait_for_index waits for the coverage to be complete, and fast_search() skips the slower fallback path over rows that are not indexed yet.",{"q":83,"a":84},"What does LanceDB Enterprise cost?","There is no public rate card: the pricing page is a contact form, and the Enterprise tier is sold as a managed deployment or bring-your-own-cloud with SOC 2 Type II and HIPAA coverage. The vendor's published benchmark works out at roughly $779 a month for 100 million vectors.",[86,89,92,95,98,101,104,107],{"id":87,"title":88},"what-it-is","What LanceDB is",{"id":90,"title":91},"how-it-works","How a query runs",{"id":93,"title":94},"indexes","Which index to build",{"id":96,"title":97},"getting-started","Getting started",{"id":99,"title":100},"where-it-shingles","Where it shingles",{"id":102,"title":103},"pricing","Pricing",{"id":105,"title":106},"verdict","Verdict",{"id":108,"title":109},"sources","Sources",[111,115,118,121,140,194,195,202,211,230,233,234,237,281,284,317,318,321,323,337,351,352,355,402,405,419,420,427,435,436,439,452,462,463],{"type":112,"content":113},"paragraph",[114],"LanceDB is an embedded vector database: a Rust library that links into the application process and stores vectors, metadata and source text in the Lance columnar format. There is no server to deploy, no cluster to size and no connection pool to tune — the strongest argument for it, and the reason it should be compared as much with SQLite as with Qdrant.",{"type":112,"content":116},[117],"It competes with the embedded options — SQLite with a vector extension, Chroma, an in-process index — and, once pointed at object storage, with the hosted services. It replaces the pattern of running a dedicated search cluster for a corpus that fits on one machine.",{"type":119,"level":120,"id":87,"text":88},"heading",2,{"type":112,"content":122},[123,124,128,129,128,132,135,136,139],"The current release is 0.40.0, published on 7 October 2026 and requiring Python 3.10 or newer, with JavaScript and Rust clients against the same Rust core. Data lives wherever the connection URI points: a local directory, ",{"tag":125,"children":126},"code",[127],"s3:\u002F\u002F",", ",{"tag":125,"children":130},[131],"gs:\u002F\u002F",{"tag":125,"children":133},[134],"az:\u002F\u002F",", or ",{"tag":125,"children":137},[138],"db:\u002F\u002F"," for the Enterprise cluster, and the same Lance files are readable by both editions.",{"type":141,"ordered":142,"items":143},"list",false,[144,150,155,160,179,184,189],[145,149],{"tag":146,"children":147},"strong",[148],"Licence:"," Apache-2.0 for the library; Enterprise is a commercial product sold as managed or bring-your-own-cloud.",[151,154],{"tag":146,"children":152},[153],"Shape:"," embedded in your process — no daemon, no sharding, no separate query language.",[156,159],{"tag":146,"children":157},[158],"Storage:"," the Lance format holds vectors, metadata and raw data in one table, with versioning and zero-copy reads through Apache Arrow.",[161,164,165,128,168,128,171,174,175,178],{"tag":146,"children":162},[163],"Indexes:"," ",{"tag":125,"children":166},[167],"IVF_RQ",{"tag":125,"children":169},[170],"IVF_PQ",{"tag":125,"children":172},[173],"IVF_HNSW_SQ"," and ",{"tag":125,"children":176},[177],"IVF_HNSW_FLAT"," for vectors, BM25 for full text, plus scalar indexes.",[180,183],{"tag":146,"children":181},[182],"Search:"," vector, full-text and hybrid queries with reranking, prefiltering by default, distance bounds and an exact-scan escape hatch.",[185,188],{"tag":146,"children":186},[187],"Scale guidance:"," comfortable on a single node; the FAQ targets roughly 10 to 50 billion rows and 10 to 30 TB before Enterprise is the answer.",[190,193],{"tag":146,"children":191},[192],"Clients:"," Python, JavaScript and Rust, installed with pip, npm or cargo.",{"type":119,"level":120,"id":90,"text":91},{"type":112,"content":196},[197,198,201],"A search without an index is a scan: every vector is compared against the query and the closest k are returned, which is exact and fast enough while the table is small. An IVF index spends training time clustering vectors into partitions, so a query compares against a few centroids first and then brute-forces inside those partitions; ",{"tag":125,"children":199},[200],"nprobes",", which defaults to 20, is how many partitions are opened. HNSW then sits inside each partition as a second-level graph, which is why the documentation can say that HNSW is not a top-level index in LanceDB.",{"type":203,"attrs":204,"inner":208,"caption":209},"diagram",{"viewBox":205,"role":206,"aria-labelledby":207},"0 0 720 160","img","lancedb-t lancedb-d","\u003Ctitle id=\"lancedb-t\">How one hybrid query runs\u003C\u002Ftitle>\u003Cdesc id=\"lancedb-d\">A left to right flow: rows are ingested into a Lance table stored on local disk or object storage. The table feeds two indexes in parallel, a vector index over the embedding column and a BM25 full-text index over the text column, and a reciprocal rank fusion step merges both result lists into one ranked top-k.\u003C\u002Fdesc>\u003Ctext x=\"8\" y=\"18\" class=\"d-title\">LANCEDB\u003C\u002Ftext>\u003Ctext x=\"712\" y=\"18\" text-anchor=\"end\" class=\"d-label\">two indexes, one ranking\u003C\u002Ftext>\u003Crect x=\"8\" y=\"76\" width=\"120\" height=\"48\" rx=\"10\" class=\"d-box\"\u002F>\u003Ctext x=\"68\" y=\"96\" text-anchor=\"middle\" class=\"d-text\">Ingest\u003C\u002Ftext>\u003Ctext x=\"68\" y=\"114\" text-anchor=\"middle\" class=\"d-small\">Arrow or JSON\u003C\u002Ftext>\u003Cpath d=\"M128 100h28\" class=\"d-line\"\u002F>\u003Crect x=\"156\" y=\"76\" width=\"140\" height=\"48\" rx=\"10\" class=\"d-box\"\u002F>\u003Ctext x=\"226\" y=\"96\" text-anchor=\"middle\" class=\"d-text\">Lance table\u003C\u002Ftext>\u003Ctext x=\"226\" y=\"114\" text-anchor=\"middle\" class=\"d-small\">local or s3\u003C\u002Ftext>\u003Cpath d=\"M296 100 H316 V56 H336\" class=\"d-line\"\u002F>\u003Cpath d=\"M296 100 H316 V132 H336\" class=\"d-line\"\u002F>\u003Crect x=\"336\" y=\"34\" width=\"150\" height=\"44\" rx=\"10\" class=\"d-sky\"\u002F>\u003Ctext x=\"411\" y=\"50\" text-anchor=\"middle\" class=\"d-text\">Vector index\u003C\u002Ftext>\u003Ctext x=\"411\" y=\"68\" text-anchor=\"middle\" class=\"d-small\">HNSW, IVF, PQ\u003C\u002Ftext>\u003Crect x=\"336\" y=\"110\" width=\"150\" height=\"44\" rx=\"10\" class=\"d-gold\"\u002F>\u003Ctext x=\"411\" y=\"126\" text-anchor=\"middle\" class=\"d-text\">BM25 index\u003C\u002Ftext>\u003Ctext x=\"411\" y=\"144\" text-anchor=\"middle\" class=\"d-small\">full text\u003C\u002Ftext>\u003Cpath d=\"M486 56 H512 V100 H540\" class=\"d-line\"\u002F>\u003Cpath d=\"M486 132 H512 V100 H540\" class=\"d-line\"\u002F>\u003Crect x=\"540\" y=\"76\" width=\"160\" height=\"48\" rx=\"10\" class=\"d-accent\"\u002F>\u003Ctext x=\"620\" y=\"96\" text-anchor=\"middle\" class=\"d-text\">RRF fusion\u003C\u002Ftext>\u003Ctext x=\"620\" y=\"114\" text-anchor=\"middle\" class=\"d-small\">top-k\u003C\u002Ftext>",[210],"A hybrid search: one Lance table feeds a vector index and a BM25 index, and rank fusion merges both into one ranked list.",{"type":112,"content":212},[213,214,217,218,221,222,225,226,229],"Full-text search is a separate BM25 index built with ",{"tag":125,"children":215},[216],"create_fts_index",", and hybrid search runs both halves and merges them: by default with an RRF reranker, which turns each list into ranks and adds them, so a result that ranks well in either half wins without either score scale dominating. Filters passed to ",{"tag":125,"children":219},[220],"where"," are prefilters by default, applied before scoring; ",{"tag":125,"children":223},[224],"prefilter=False"," moves the filter after the sub-queries, which can return fewer than ",{"tag":125,"children":227},[228],"limit"," rows.",{"type":112,"content":231},[232],"The storage layer decides the latency profile. On local disk reads are memory-mapped and quick; pointed at S3, GCS or Azure Blob, every cold read is a network round trip, and the vendor's own comparison puts that at 500 to 1,000 ms for the open-source build against 50 to 200 ms on Enterprise, where an NVMe cache absorbs the repeat reads.",{"type":119,"level":120,"id":93,"text":94},{"type":112,"content":235},[236],"The index choice is a compression decision first, and the documentation is direct about the trade:",{"type":238,"head":239,"rows":248},"table",[240,242,244,246],[241],"Priority",[243],"Index",[245],"Compression",[247],"Note",[249,257,265,273],[250,252,253,255],[251],"Maximum compression",[167],[254],"About 1\u002F32 of raw size",[256],"RaBitQ quantisation over IVF",[258,260,261,263],[259],"Accuracy at 256 dimensions or fewer",[170],[262],"1\u002F64 to 1\u002F16 of raw size",[264],"Product quantisation, recall tuned with refine_factor",[266,268,269,271],[267],"Best recall-to-latency trade-off",[173],[270],"A little over 1\u002F4 of raw size",[272],"IVF partitions with HNSW inside, scalar quantisation",[274,276,277,279],[275],"Highest recall, no quantisation",[177],[278],"Raw size plus graph overhead",[280],"The expensive, faithful option",{"type":112,"content":282},[283],"Two rules from the docs matter more than the table. HNSW never appears alone: it is only ever a substructure inside IVF partitions, so there is no plain HNSW index to create. And if the workload carries metadata filters, the docs tell you to prefer IVF_RQ or IVF_PQ, because the HNSW-backed variants show higher latency variance in filtered searches.",{"type":285,"variant":286,"body":287,"title":316},"callout","warn",[288],[289,290,174,292,294,295,297,298,300,301,304,305,308,309,312,313,315],"For ",{"tag":125,"children":291},[167],{"tag":125,"children":293},[170]," the guidance is to keep ",{"tag":125,"children":296},[200]," at the default and raise it only when recall falls short; for the IVF_HNSW variants to keep ",{"tag":125,"children":299},[200]," and tune ",{"tag":125,"children":302},[303],"ef"," first, starting around 1.5 times k and going up to 10 times k. ",{"tag":125,"children":306},[307],"refine_factor"," should sit between 5 and 50, and a filter that matches few rows may need ",{"tag":125,"children":310},[311],"maximum_nprobes"," raised to return ",{"tag":125,"children":314},[228]," results at all.","Tune nprobes before ef",{"type":119,"level":120,"id":96,"text":97},{"type":112,"content":319},[320],"Install the package, point at a directory and the table is on disk. The snippet below builds both indexes and runs the hybrid query the documentation recommends, with the metadata filter applied before scoring.",{"type":125,"code":322},"import lancedb\nfrom lancedb.rerankers import RRFReranker\n\ndb = lancedb.connect(\".\u002Fdata\")            # a local directory, no server\ntable = db.open_table(\"documents\")\ntable.create_fts_index(\"text\")            # BM25, built in the background\n\nresults = (\n    table.search(query_type=\"hybrid\")\n    .vector(embed(query))                 # your embedding model\n    .text(\"refunds within 14 days\")\n    .where(\"lang = 'en'\", prefilter=True)  # default: filter before scoring\n    .rerank(RRFReranker())                # the default hybrid reranker\n    .limit(5)\n    .to_list()\n)\nfor row in results:\n    print(round(row[\"_relevance_score\"], 3), row[\"text\"][:80])\n",{"type":112,"content":324},[325,326,328,329,332,333,336],"Nothing in that snippet needs a server, a container or an API key, and the same code runs against ",{"tag":125,"children":327},[127]," by changing the connect URI. Full-text and vector index builds return immediately and finish in the background; ",{"tag":125,"children":330},[331],"wait_for_index"," together with ",{"tag":125,"children":334},[335],"index_stats"," is how a job checks that nothing is left unindexed.",{"type":285,"variant":338,"body":339,"title":350},"note",[340],[341,342,345,346,349],"New rows stay outside an existing index until they are folded in with ",{"tag":125,"children":343},[344],"optimize()",", and until then a normal search pays for a slower fallback scan while ",{"tag":125,"children":347},[348],"fast_search()"," skips it. In the open-source build that schedule is yours: compaction and reindexing are calls someone has to book somewhere.","Rows appended after the build",{"type":119,"level":120,"id":99,"text":100},{"type":112,"content":353},[354],"The weaknesses follow from the architecture. One process means one host: the vendor's own comparison caps the open-source build at 10 to 50 queries per second with no cache, and every maintenance task — compaction, reindexing, index fragmentation after deletes — is a job someone has to schedule. Concurrent writes are bounded by how many times a writer will retry a commit, and Python users are told not to fork.",{"type":238,"head":356,"rows":365},[357,359,361,363],[358],"Engine",[360],"Licence",[362],"Index options",[364],"Operational shape",[366,375,384,393],[367,369,371,373],[368],"LanceDB",[370],"Apache-2.0, embedded",[372],"IVF and IVF-HNSW, BM25, scalar",[374],"A library inside your process",[376,378,380,382],[377],"Qdrant",[379],"Apache-2.0, server",[381],"Filterable HNSW, scalar and product quantisation",[383],"A container or a managed cloud",[385,387,389,391],[386],"pgvector",[388],"PostgreSQL licence",[390],"HNSW and IVFFlat inside Postgres",[392],"An extension in a database you already run",[394,396,398,400],[395],"Weaviate",[397],"BSD-3-Clause",[399],"HNSW, flat and dynamic",[401],"Single binary, optional cluster",{"type":112,"content":403},[404],"The honest summary: LanceDB is the cheapest thing to run and the most maintenance to own. The vendor's table puts single-process throughput at 10 to 50 queries per second and object-storage latency at 500 to 1,000 ms, with distributed search and platform-managed compaction still marked as coming soon on the Enterprise side — worth knowing before a purchase decision rests on the roadmap.",{"type":112,"content":406},[407,408,411,412,174,415,418],"API asymmetry is the other papercut: on an Enterprise ",{"tag":125,"children":409},[410],"RemoteTable"," the table-level ",{"tag":125,"children":413},[414],"to_arrow",{"tag":125,"children":416},[417],"to_pandas"," calls are refused, so materialisation has to go through the query builder, and an operation can fail on a service-level policy instead of on the data. Code that moves from OSS to Enterprise is close to the same, but not the same.",{"type":119,"level":120,"id":102,"text":103},{"type":112,"content":421},[422,423,426],"The library is Apache-2.0 and free in every sense that matters: ",{"tag":125,"children":424},[425],"pip install",", no account, no metering. The pricing page does not list a rate card — it is a contact form — and the Enterprise tier is sold as managed or bring-your-own-cloud with SOC 2 Type II, HIPAA coverage and OpenTelemetry metrics and traces. The one concrete number the vendor publishes is a benchmark of roughly $779 a month for 100 million vectors.",{"type":141,"ordered":142,"items":428},[429,431,433],[430],"Open source: the library, the indexes, hybrid search and the CLI maintenance calls, under Apache-2.0, with community support.",[432],"Enterprise: managed or BYOC, distributed query nodes, an NVMe cache, platform-run indexing and compaction, and compliance under SOC 2 Type II and HIPAA.",[434],"Coming soon, in the vendor's own table: distributed search, distributed indexing and compaction.",{"type":119,"level":120,"id":105,"text":106},{"type":112,"content":437},[438],"LanceDB is the right answer when the corpus and the traffic fit one machine, and the wrong answer when they do not — the vendor says as much in its own comparison table. Its strength is that retrieval becomes a library call instead of an infrastructure project, and its cost is that every operational duty of a database lands on the application team. The opinionated reading: for a RAG pipeline under a million chunks, running a separate vector database is an unnecessary service to operate, and LanceDB is what that pipeline should reach for first.",{"type":141,"ordered":440,"items":441},true,[442,444,446,448,450],[443],"Use it for a prototype, a single-node RAG pipeline or an edge deployment, where a database server would be the heaviest component in the stack.",[445],"Use it when the data is already in object storage and the Lance format's versioning and zero-copy reads remove a second copy of the corpus.",[447],"Think twice when queries must stay under 100 ms from S3 with real concurrency — the vendor's own figure for OSS is 500 to 1,000 ms and 10 to 50 queries per second.",[449],"Budget for maintenance: optimize, compaction and reindexing are unscheduled work in the open-source build, and index fragmentation grows with every delete.",[451],"Choose the Enterprise tier only for the distributed parts; the API differences, from RemoteTable materialisation limits to cluster-side guardrails, are what lock the application in.",{"type":285,"variant":453,"body":454,"title":461},"tip",[455],[456,457,460],"Build the index on real data and measure recall against ",{"tag":125,"children":458},[459],"bypass_vector_index()",", which runs an exact scan and gives the ground truth. The gap between the two answers is the actual cost of the approximation, and it is the number a latency budget should be written from.","One measurement before committing",{"type":119,"level":120,"id":108,"text":109},{"type":141,"ordered":440,"items":464},[465,469,472,475,478,481,484,487],[466],{"tag":467,"href":31,"children":468},"a",[30],[470],{"tag":467,"href":34,"children":471},[33],[473],{"tag":467,"href":37,"children":474},[36],[476],{"tag":467,"href":40,"children":477},[39],[479],{"tag":467,"href":43,"children":480},[42],[482],{"tag":467,"href":46,"children":483},[45],[485],{"tag":467,"href":49,"children":486},[48],[488],{"tag":467,"href":52,"children":489},[51],[491,540,581,631],{"slug":492,"published":493,"minutes":494,"category":7,"tags":495,"keywords":500,"about":509,"sources":513,"cover":532,"og":533,"expertise":55,"locales":534,"lang":57,"title":535,"description":536,"coverAlt":537,"url":538,"pricing":539,"kind":496},"zep","2026-10-06",11,[496,497,498,499,12],"Agent memory","Knowledge graph","Temporal graph","Context engineering",[501,502,503,504,505,506,507,508],"zep ai","zep agent memory","graphiti knowledge graph","zep pricing","zep vs mem0","long-term memory for agents","temporal knowledge graph","zep cloud",[510],{"name":511,"url":512},"Zep","https:\u002F\u002Fwww.getzep.com\u002F",[514,517,520,523,526,529],{"title":515,"url":516},"Zep pricing: plans, credits and limits","https:\u002F\u002Fwww.getzep.com\u002Fpricing",{"title":518,"url":519},"Zep documentation","https:\u002F\u002Fhelp.getzep.com\u002F",{"title":521,"url":522},"Graphiti on GitHub","https:\u002F\u002Fgithub.com\u002Fgetzep\u002Fgraphiti",{"title":524,"url":525},"Graphiti product page","https:\u002F\u002Fwww.getzep.com\u002Fplatform\u002Fgraphiti\u002F",{"title":527,"url":528},"Announcing a new direction for Zep's open-source strategy","https:\u002F\u002Fwww.getzep.com\u002Fblog\u002Fannouncing-a-new-direction-for-zeps-open-source-strategy\u002F",{"title":530,"url":531},"Graphiti: temporal knowledge graphs for AI agents (arXiv)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2501.13956","\u002Fimages\u002Fblog\u002Fzep\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fzep\u002Fog.jpg",[57,58,59],"Zep review: agent memory on a temporal graph","Zep is a hosted agent-memory API on a temporal knowledge graph: credits on writes, retrieval free, Flex from $125 a month, Graphiti as the part you can self-host.","Diagram of how a fact reaches the prompt in Zep: messages and facts are extracted into a per-user context graph of entities and relationships, and retrieval walks the graph to return a context block with the supporting facts.","https:\u002F\u002Fwww.getzep.com","Apache-2.0 core · Cloud from $50 per month",{"slug":386,"published":5,"minutes":541,"category":7,"tags":542,"keywords":546,"about":553,"sources":559,"cover":574,"og":575,"expertise":55,"locales":576,"lang":57,"title":577,"description":578,"coverAlt":579,"url":555,"pricing":388,"kind":580},10,[9,543,544,12,545],"Postgres","HNSW","Quantisation",[386,547,548,549,550,551,552],"pgvector vs qdrant","postgres vector search","hnsw index postgres","iterative index scans","binary quantization postgres","vector database postgres",[554,556],{"name":386,"url":555},"https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector",{"name":557,"url":558},"PostgreSQL","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPostgreSQL",[560,562,565,568,571],{"title":561,"url":555},"pgvector README",{"title":563,"url":564},"pgvector changelog","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector\u002Fblob\u002Fmaster\u002FCHANGELOG.md",{"title":566,"url":567},"PostgreSQL news: pgvector 0.8.2 released","https:\u002F\u002Fwww.postgresql.org\u002Fabout\u002Fnews\u002Fpgvector-082-released-3245\u002F",{"title":569,"url":570},"AWS: Scale pgvector with binary quantization","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdatabase\u002Fscale-pgvector-with-binary-quantization-on-amazon-aurora-postgresql\u002F",{"title":572,"url":573},"pgvector licence","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector\u002Fblob\u002Fmaster\u002FLICENSE","\u002Fimages\u002Fblog\u002Fpgvector\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fpgvector\u002Fog.jpg",[57,58,59],"pgvector, reviewed: the vector database you do not have to run","A review of pgvector 0.8.7: iterative scans for filtered search, HNSW and IVFFlat, binary quantisation at 100M vectors, and the CVE that made index builds a patch item.","A query enters at the top and splits into an exact sequential scan, an HNSW graph walk and an IVFFlat probe; a band below shows an iterative scan continuing until the limit is full.","Vector database extension",{"slug":582,"published":583,"minutes":541,"category":7,"tags":584,"keywords":586,"about":592,"sources":596,"cover":624,"og":625,"expertise":55,"locales":626,"lang":57,"title":627,"description":628,"coverAlt":629,"url":595,"pricing":630,"kind":496},"mem0","2026-09-17",[496,585,12,9],"Long-term memory",[582,587,588,589,590,506,591],"mem0 review","agent memory layer","mem0 self-hosted","mem0 pricing","mem0 alternatives",[593],{"name":594,"url":595},"Mem0","https:\u002F\u002Fmem0.ai",[597,600,603,606,609,612,615,618,621],{"title":598,"url":599},"Mem0 documentation","https:\u002F\u002Fdocs.mem0.ai\u002Fintroduction",{"title":601,"url":602},"Mem0 quickstart","https:\u002F\u002Fdocs.mem0.ai\u002Fquickstart",{"title":604,"url":605},"How Mem0 works","https:\u002F\u002Fdocs.mem0.ai\u002Fcore-concepts\u002Fhow-it-works",{"title":607,"url":608},"Mem0 pricing","https:\u002F\u002Fmem0.ai\u002Fpricing",{"title":610,"url":611},"Mem0 on GitHub","https:\u002F\u002Fgithub.com\u002Fmem0ai\u002Fmem0",{"title":613,"url":614},"mem0ai on PyPI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fmem0ai\u002F",{"title":616,"url":617},"Mem0 research and benchmarks","https:\u002F\u002Fmem0.ai\u002Fresearch",{"title":619,"url":620},"Mem0 MCP server","https:\u002F\u002Fdocs.mem0.ai\u002Fplatform\u002Fmem0-mcp",{"title":622,"url":623},"Mem0 paper on arXiv","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.19413","\u002Fimages\u002Fblog\u002Fmem0\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fmem0\u002Fog.jpg",[57,58,59],"Mem0: what an agent memory layer costs per turn","A review of Mem0: facts extracted from every turn, the April 2026 benchmark table and its platform-only caveat, four cloud tiers and what self-hosting leaves out.","A loop that turns conversation into stored facts and reads them back into the prompt","Free tier · from $19 per month",{"slug":632,"published":633,"minutes":541,"category":7,"tags":634,"keywords":637,"about":646,"sources":656,"cover":675,"og":676,"expertise":55,"locales":677,"lang":57,"title":678,"description":679,"coverAlt":680,"url":649,"pricing":681,"kind":23},"milvus-zilliz","2026-09-08",[9,10,635,636,12],"BM25 full text","Distributed",[638,639,640,641,642,643,644,645],"milvus","milvus vs qdrant","zilliz cloud pricing","vector database comparison","milvus hybrid search","apache milvus self-hosting","milvus 3.0","rag vector store",[647,650,653],{"name":648,"url":649},"Milvus","https:\u002F\u002Fmilvus.io",{"name":651,"url":652},"Zilliz Cloud","https:\u002F\u002Fzilliz.com",{"name":654,"url":655},"Retrieval-augmented generation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRetrieval-augmented_generation",[657,660,663,666,669,672],{"title":658,"url":659},"Milvus architecture overview","https:\u002F\u002Fmilvus.io\u002Fdocs\u002Farchitecture_overview.md",{"title":661,"url":662},"Milvus release notes","https:\u002F\u002Fmilvus.io\u002Fdocs\u002Frelease_notes.md",{"title":664,"url":665},"Milvus releases on GitHub","https:\u002F\u002Fgithub.com\u002Fmilvus-io\u002Fmilvus\u002Freleases",{"title":667,"url":668},"Milvus README: features and licence","https:\u002F\u002Fgithub.com\u002Fmilvus-io\u002Fmilvus",{"title":670,"url":671},"Zilliz Cloud pricing","https:\u002F\u002Fzilliz.com\u002Fpricing",{"title":673,"url":674},"Zilliz Cloud list price","https:\u002F\u002Fzilliz.com\u002Fpricing\u002Fpricing-guide","\u002Fimages\u002Fblog\u002Fmilvus-zilliz\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fmilvus-zilliz\u002Fog.jpg",[57,58,59],"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. A review of its architecture, hybrid search, costs and where it should not be used.","Cover artwork for the Milvus review showing a pipeline from ingest to index, search and reranking","Apache-2.0 · Zilliz Cloud free tier",1791383548697]