[{"data":1,"prerenderedAt":702},["ShallowReactive",2],{"tool-pinecone-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":23,"sources":33,"cover":58,"og":59,"expertise":60,"locales":61,"lang":62,"title":65,"description":66,"coverAlt":67,"url":68,"pricing":69,"kind":25,"metaTitle":70,"takeaways":71,"faq":77,"toc":96,"blocks":121,"others":509},"pinecone","2026-07-09",11,"rag",[9,10,11,12,13],"Vector search","Embeddings","RAG","Namespaces","Hybrid search",[15,16,17,18,19,20,21,22],"pinecone vector database","pinecone pricing","pinecone read units","pinecone namespaces","pinecone vs qdrant","pinecone vs pgvector","pinecone documents api","serverless vector database cost",[24,27,30],{"name":25,"url":26},"Vector database","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FVector_database",{"name":28,"url":29},"Nearest neighbor search","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FNearest_neighbor_search",{"name":31,"url":32},"Okapi BM25","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOkapi_BM25",[34,37,40,43,46,49,52,55],{"title":35,"url":36},"Pinecone docs: Index data overview, indexes, namespaces and metadata","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Findexing-overview",{"title":38,"url":39},"Pinecone docs: Adopt the Documents API, API version 2026-07","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Fadopt-the-documents-api",{"title":41,"url":42},"Pinecone docs: Create an index, schemas, regions and metrics","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Findex-data\u002Fcreate-an-index",{"title":44,"url":45},"Pinecone docs: Understanding Pinecone cost, read units, write units and egress","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Forganizations\u002Fmanage-cost\u002Funderstanding-cost",{"title":47,"url":48},"Pinecone pricing: plans, limits and rates","https:\u002F\u002Fwww.pinecone.io\u002Fpricing\u002F",{"title":50,"url":51},"Pinecone docs: Semantic search","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Fsearch\u002Fsemantic-search",{"title":53,"url":54},"Pinecone docs: Local development with Pinecone Local","https:\u002F\u002Fdocs.pinecone.io\u002Fguides\u002Foperations\u002Flocal-development",{"title":56,"url":57},"Pinecone docs: 2026 release notes","https:\u002F\u002Fdocs.pinecone.io\u002Frelease-notes\u002F2026","\u002Fimages\u002Fblog\u002Fpinecone\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fpinecone\u002Fog.jpg","ai-engineer",[62,63,64],"en","de","hu","Pinecone: a review of the managed vector database","What Pinecone really costs: read units scale with namespace size, a schema cannot be changed after creation, and where a self-hosted vector database is the better buy.","Diagram: documents, dense vectors and sparse vectors upserted into a serverless index partitioned by namespace, a query naming one namespace and returning scored hits.","https:\u002F\u002Fwww.pinecone.io","Free tier · from $2 per month","Pinecone vector database, reviewed · Balázs Csorba",[72,73,74,75,76],"Pinecone bills reads, not vectors. A query costs one read unit per gigabyte of the namespace it scans, with a floor of 0.25 read units, so partitioning is the single decision that determines the bill.","Read units cost four times write units on Standard, at 16 to 18 US dollars per million against 4 to 4.50. A read-heavy retrieval application is dominated by one line item.","One million queries against a 50 GB namespace is roughly 800 US dollars a month on Standard. The same million queries against 100 namespaces of 0.5 GB is about 8 dollars. Nothing about the application changes.","Schema migration is not supported on document indexes, and an index created before API version 2026-07 can never move to the Documents API. Adding a field means creating a new index and re-ingesting.","There is no uptime SLA below Enterprise, which starts at a 500 US dollar monthly minimum, and the Starter plan is restricted to a single region.",[78,81,84,87,90,93],{"q":79,"a":80},"What is Pinecone and what is it used for?","Pinecone is a fully managed vector database. You store embeddings in an index and retrieve them by similarity, which is the retrieval step in a RAG pipeline, in semantic product search and in agent memory. It runs on managed serverless infrastructure on AWS, Azure or GCP, so there is no cluster to operate.",{"q":82,"a":83},"How much does Pinecone cost per month?","The Starter plan is free and includes up to 2 GB of storage, 2 million write units, 1 million read units and 1 GB of egress per month. Builder costs a flat 20 dollars. Standard has a 50 dollar monthly minimum and prices storage at 0.33 dollars per GB per month, write units at 4 to 4.50 per million, read units at 16 to 18 per million and egress at 0.10 per GB after 100 GB included. Enterprise starts at 500 dollars per month with read units at 24 to 27 per million.",{"q":85,"a":86},"What is the difference between a Pinecone vector index and a document index?","A vector index is the classic one, created with dimension, metric and vector_type, holding dense and sparse vectors through the Vectors API, with hybrid search in a single query. A document index is created with a schema through the Documents API and can hold dense vector, sparse vector and full-text fields in one index, but a single search ranks by one scoring type, so hybrid search means either a text-match filter followed by a dense search or two searches fused in the application.",{"q":88,"a":89},"Are Pinecone namespaces just for multi-tenancy?","They are documented for multitenancy and query speed, but the cost model makes them a cost control too, which is the least obvious thing about Pinecone to discover. A query costs one read unit per gigabyte of the namespace it scans, so a per-tenant namespace keeps a large tenant from setting the read price for everyone else.",{"q":91,"a":92},"Can I change the schema of a Pinecone index later?","No. Pinecone's documentation is explicit that schema migration is not yet supported: once a document index is created you cannot add, remove or modify fields, and the documented remedy is to delete the index and create a new one. The same applies to cloud and region, which cannot be changed after a serverless index exists.",{"q":94,"a":95},"Is there a free tier, and can I develop locally?","The Starter plan is free with hard ceilings and one project. For local development there is Pinecone Local, an in-memory Docker emulator, but it runs the 2025-01 API version rather than the current one, caps an index at 100,000 records, ignores API keys and supports no namespace management, no backups and no Pinecone Inference, so treat it as a CI convenience rather than a faithful local environment.",[97,100,103,106,109,112,115,118],{"id":98,"title":99},"what-it-is","What it is",{"id":101,"title":102},"how-it-works","How it works",{"id":104,"title":105},"where-it-breaks","Where it breaks",{"id":107,"title":108},"getting-started","Getting started",{"id":110,"title":111},"pricing","Pricing",{"id":113,"title":114},"alternatives","Alternatives",{"id":116,"title":117},"verdict","Verdict",{"id":119,"title":120},"sources","Sources",[122,126,129,132,135,221,222,229,238,250,251,254,276,279,288,289,292,294,313,321,322,325,389,392,395,396,399,453,456,457,460,473,481,482],{"type":123,"content":124},"paragraph",[125],"PINECONE is the managed vector database most retrieval prototypes start on, and for a defensible reason: an index is one POST away, there is nothing to run, and the bill is metered rather than provisioned. That combination is genuinely hard to beat for the first year of a retrieval feature. It is also why Pinecone so often stops being the right default once a product has real traffic, because its pricing model rewards one decision teams rarely make on purpose — how the data is partitioned.",{"type":123,"content":127},[128],"It competes with two different kinds of thing. On one side the general-purpose databases that grew a vector column: pgvector inside PostgreSQL, MongoDB Atlas, Redis. On the other side the purpose-built engines, Qdrant and Weaviate, self-hosted or in the cloud. The pitch against all of them is operational: no cluster, no reindex, no ANN tuning, capacity that appears when it is needed. The counter-pitch is lock-in, the cost per query at scale, and a data model that is deliberately not SQL.",{"type":130,"level":131,"id":98,"text":99},"heading",2,{"type":123,"content":133},[134],"The index is the unit of everything. Records go into one, queries hit one, and inside it the data is partitioned into namespaces, with every upsert, query, fetch and list targeting exactly one namespace. Since API version 2026-07 there are two kinds of index, and telling them apart is the most important thing to understand before writing code against Pinecone.",{"type":136,"ordered":137,"items":138},"list",false,[139,154,167,169,175,215],[140,141,145,146,149,150,153],"A vector index is the classic one: dense and optional sparse vectors, created with ",{"tag":142,"children":143},"code",[144],"dimension",", ",{"tag":142,"children":147},[148],"metric"," and ",{"tag":142,"children":151},[152],"vector_type",", read and written through the Vectors API.",[155,156,145,159,162,163,166],"A document index is the new one: a schema declaring ",{"tag":142,"children":157},[158],"dense_vector",{"tag":142,"children":160},[161],"sparse_vector"," and full-text ",{"tag":142,"children":164},[165],"string"," fields, read and written through the Documents API.",[168],"Namespaces are created implicitly on first upsert. One per tenant is the documented multitenancy pattern, and partitioning by namespace also cuts read cost, which is the point made below.",[170,171,174],"Metadata is a flat JSON object: no nested objects, no null values, keys cannot start with ",{"tag":142,"children":172},[173],"$",", integers are stored as 64-bit floats, and 40 KB is the ceiling per record. Everything is indexed for filtering unless configured otherwise.",[176,177,145,180,145,183,145,186,145,189,145,192,145,195,145,198,145,201,204,205,145,208,149,211,214],"The filter language is a documented subset: ",{"tag":142,"children":178},[179],"$eq",{"tag":142,"children":181},[182],"$ne",{"tag":142,"children":184},[185],"$gt",{"tag":142,"children":187},[188],"$gte",{"tag":142,"children":190},[191],"$lt",{"tag":142,"children":193},[194],"$lte",{"tag":142,"children":196},[197],"$in",{"tag":142,"children":199},[200],"$nin",{"tag":142,"children":202},[203],"$exists"," plus ",{"tag":142,"children":206},[207],"$and",{"tag":142,"children":209},[210],"$or",{"tag":142,"children":212},[213],"$not",". The list operators accept at most 10,000 values.",[216,217,220],"Sparse indexes are narrow: at most 2,048 non-zero values per vector, 10 upserts per second, 100 queries per second, a ",{"tag":142,"children":218},[219],"top_k"," ceiling of 10,000, and dot-product as the only metric.",{"type":130,"level":131,"id":101,"text":102},{"type":123,"content":223},[224,225,228],"Three ranking signals can live in one index: BM25 over full-text fields, dense vectors for meaning, and sparse vectors for learned lexical importance. On a vector index a hybrid query combines dense and sparse in a single call. On a document index a search ranks by one scoring type chosen with ",{"tag":142,"children":226},[227],"score_by",", so hybrid search there means either a text-match filter that narrows candidates before a dense search, or two searches fused with reciprocal rank fusion in the application.",{"type":230,"attrs":231,"inner":235,"caption":236},"diagram",{"viewBox":232,"role":233,"aria-labelledby":234},"0 0 720 360","img","pinc-t pinc-d","\u003Ctitle id=\"pinc-t\">Pinecone: documents and vectors into namespaces, queries out\u003C\u002Ftitle>\u003Cdesc id=\"pinc-d\">Documents with full-text fields, dense vectors and sparse vectors are upserted into a serverless index that is partitioned into namespaces. A query names one namespace, costs one read unit per gigabyte of that namespace with a floor of 0.25 read units, can be narrowed with a metadata filter, and returns scored hits whose response bytes are billed as egress.\u003C\u002Fdesc>\u003Ctext x=\"20\" y=\"28\" class=\"d-title\">Pinecone: write once, query a namespace\u003C\u002Ftext>\u003Ctext x=\"700\" y=\"28\" text-anchor=\"end\" class=\"d-label\">docs.pinecone.io\u003C\u002Ftext>\u003Ctext x=\"20\" y=\"56\" class=\"d-label\">UPSERT\u003C\u002Ftext>\u003Crect x=\"20\" y=\"70\" width=\"210\" height=\"54\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"125\" y=\"96\" text-anchor=\"middle\" class=\"d-text\">Documents\u003C\u002Ftext>\u003Ctext x=\"125\" y=\"114\" text-anchor=\"middle\" class=\"d-small\">BM25 full-text fields\u003C\u002Ftext>\u003Crect x=\"255\" y=\"70\" width=\"210\" height=\"54\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"360\" y=\"96\" text-anchor=\"middle\" class=\"d-text\">Dense vectors\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"114\" text-anchor=\"middle\" class=\"d-small\">cosine or euclidean\u003C\u002Ftext>\u003Crect x=\"490\" y=\"70\" width=\"205\" height=\"54\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"592\" y=\"96\" text-anchor=\"middle\" class=\"d-text\">Sparse vectors\u003C\u002Ftext>\u003Ctext x=\"592\" y=\"114\" text-anchor=\"middle\" class=\"d-small\">dotproduct only\u003C\u002Ftext>\u003Cpath d=\"M125 124 V136\" class=\"d-line\" \u002F>\u003Cpath d=\"M125 146 l-5 -9 h10 z\" class=\"d-head\" \u002F>\u003Cpath d=\"M360 124 V136\" class=\"d-line\" \u002F>\u003Cpath d=\"M360 146 l-5 -9 h10 z\" class=\"d-head\" \u002F>\u003Cpath d=\"M592 124 V136\" class=\"d-line\" \u002F>\u003Cpath d=\"M592 146 l-5 -9 h10 z\" class=\"d-head\" \u002F>\u003Ctext x=\"20\" y=\"160\" class=\"d-label\">ONE SERVERLESS INDEX, PARTITIONED BY NAMESPACE\u003C\u002Ftext>\u003Crect x=\"20\" y=\"174\" width=\"675\" height=\"58\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"357\" y=\"200\" text-anchor=\"middle\" class=\"d-text\">Index\u003C\u002Ftext>\u003Ctext x=\"357\" y=\"219\" text-anchor=\"middle\" class=\"d-small\">namespace tenant-1 &#183; tenant-2 &#183; tenant-100 &#183; the default namespace\u003C\u002Ftext>\u003Cpath d=\"M688 232 V246\" class=\"d-line\" \u002F>\u003Cpath d=\"M688 256 l-5 -9 h10 z\" class=\"d-head\" \u002F>\u003Ctext x=\"20\" y=\"256\" class=\"d-label\">QUERY\u003C\u002Ftext>\u003Crect x=\"20\" y=\"270\" width=\"210\" height=\"62\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"125\" y=\"297\" text-anchor=\"middle\" class=\"d-text\">Namespace\u003C\u002Ftext>\u003Ctext x=\"125\" y=\"317\" text-anchor=\"middle\" class=\"d-small\">1 read unit per GB, min 0.25\u003C\u002Ftext>\u003Crect x=\"255\" y=\"270\" width=\"210\" height=\"62\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"360\" y=\"297\" text-anchor=\"middle\" class=\"d-text\">Metadata filter\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"317\" text-anchor=\"middle\" class=\"d-small\">$eq, $in, $and, $not\u003C\u002Ftext>\u003Crect x=\"490\" y=\"270\" width=\"205\" height=\"62\" rx=\"10\" class=\"d-accent\" \u002F>\u003Ctext x=\"592\" y=\"297\" text-anchor=\"middle\" class=\"d-text\">Scored hits\u003C\u002Ftext>\u003Ctext x=\"592\" y=\"317\" text-anchor=\"middle\" class=\"d-small\">plus egress on the bytes\u003C\u002Ftext>\u003Cpath d=\"M236 301 H243\" class=\"d-line\" \u002F>\u003Cpath d=\"M253 301 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Cpath d=\"M471 301 H478\" class=\"d-line\" \u002F>\u003Cpath d=\"M488 301 l-9 -5 v10 z\" class=\"d-head\" \u002F>\u003Ctext x=\"20\" y=\"352\" class=\"d-small\">One data plane per index &#183; fixed at creation &#183; no schema migration\u003C\u002Ftext>",[237],"The billing model follows from the same structure: the query pays for the slice of the index it was pointed at, not for the work it did.",{"type":123,"content":239},[240,241,145,243,149,246,249],"The cost model follows from the same structure. A query costs one read unit per gigabyte of the namespace it scans, with a floor of 0.25 read units. ",{"tag":142,"children":242},[219],{"tag":142,"children":244},[245],"include_metadata",{"tag":142,"children":247},[248],"include_values"," do not change that number; only namespace size does. Egress is metered separately on the bytes returned, IDs and scores included. Around the index sit three more services worth naming, because they change what the application has to do: Pinecone Inference hosts embedding and reranking models and meters them by token or by rerank request, Pinecone Assistant turns an uploaded document set into a chat endpoint with its own token and ingestion metering, and Pinecone Nexus, listed as a knowledge engine for agents, pushes the same idea further by doing retrieval once when the data changes instead of on every agent call.",{"type":130,"level":131,"id":104,"text":105},{"type":123,"content":252},[253],"Four things will bite, and three of them are structural rather than fixable.",{"type":136,"ordered":137,"items":255},[256,258,260,270,272,274],[257],"Schema migration is not supported. Once a document index exists, fields cannot be added, removed or modified, and the documented remedy is to delete the index and create a new one.",[259],"You cannot convert. An index's data plane is fixed when it is created, so upgrading the SDK never moves an old vector index onto the Documents API. A team that wants full-text search has to build a second index and ingest again.",[261,262,265,266,269],"Cloud and region cannot be changed after creation, and the Starter plan is limited to ",{"tag":142,"children":263},[264],"aws"," ",{"tag":142,"children":267},[268],"us-east-1",". Anything with a data residency requirement is a paid-plan decision on day one.",[271],"Read cost scales with namespace size rather than with effort. A 50 GB namespace costs 50 read units per query; the same data in 100 namespaces of 0.5 GB costs 0.5 each. That is a hundredfold difference in the largest line item.",[273],"There is no uptime SLA below Enterprise, which starts at a 500 dollar monthly minimum. Standard, the plan most production workloads land on, has no SLA and no audit logs.",[275],"Pinecone Local, the local emulator, runs the 2025-01 API version, caps an index at 100,000 records, ignores API keys and supports no namespaces, no backups and no Pinecone Inference. It is a CI convenience, not a faithful local environment.",{"type":123,"content":277},[278],"Take the documented rates and do the arithmetic. On Standard, read units are $16 to $18 per million depending on cloud and region. One million queries against a 50 GB namespace is 50 million read units, roughly $800 a month in reads alone. The same million queries against 100 namespaces of 0.5 GB is 500,000 read units, about $8. Nothing about the application changed; only the partitioning did. On Enterprise, where read units start at $24 per million, the same two figures become $1,200 and $12.",{"type":280,"variant":281,"title":282,"body":283},"callout","warn","Namespaces are a cost control, not a schema detail",[284,286],[285],"Namespaces were documented for multitenancy and query speed. The cost model makes them a cost control, and that is the least obvious thing about Pinecone to discover. A per-tenant namespace is both the isolation mechanism and the mechanism that stops one large tenant from setting the read price for everybody.",[287],"The corollary is uncomfortable. The throughput examples on the pricing page look generous because a small index hits the 0.25 read-unit floor; the same traffic pattern over a 10 GB namespace costs forty times more per query.",{"type":130,"level":131,"id":107,"text":108},{"type":123,"content":290},[291],"The smallest useful Pinecone program is a vector index with your own embeddings, one namespace per tenant, and a metadata filter on the query. That is the shape most production code converges on, and it is the shape the cost model rewards.",{"type":142,"code":293},"import os\nfrom pinecone import Pinecone, ServerlessSpec\n\npc = Pinecone(api_key=os.environ[\"PINECONE_API_KEY\"])\n\nif not pc.has_index(\"products\"):\n    pc.create_index(\n        name=\"products\",\n        vector_type=\"dense\",\n        dimension=1536,\n        metric=\"cosine\",\n        spec=ServerlessSpec(cloud=\"aws\", region=\"eu-central-1\"),\n        deletion_protection=\"disabled\",\n    )\n\nindex = pc.Index(\"products\")\n\n# One namespace per tenant keeps each read inside a small slice of the index.\nindex.upsert(\n    namespace=\"tenant-42\",\n    vectors=[(\"p-1001\", embedding, {\"category\": \"pumps\", \"price\": 249.0})],\n)\n\nhits = index.query(\n    namespace=\"tenant-42\",\n    vector=query_embedding,\n    top_k=8,\n    filter={\"category\": {\"$eq\": \"pumps\"}, \"price\": {\"$lte\": 500}},\n    include_metadata=True,\n    include_values=False,   # omit the vector: egress is billed on the response\n)",{"type":123,"content":295},[296,297,300,301,304,305,308,309,312],"Two details in that snippet are load-bearing. ",{"tag":142,"children":298},[299],"include_values=False"," is the default and keeps several kilobytes per hit out of the egress bill, while a ",{"tag":142,"children":302},[303],"fetch"," always returns vector values, so use ",{"tag":142,"children":306},[307],"query"," when searching and only need identifiers or metadata. And ",{"tag":142,"children":310},[311],"filter"," does not reduce read units: the namespace does. Filters narrow what is scanned inside the namespace you already chose, which is one more reason not to put everything into a single namespace.",{"type":280,"variant":314,"title":315,"body":316},"note","Choose the index kind first",[317,319],[318],"If the plan involves BM25, a document index with a schema is the only way in, and the schema cannot be changed afterwards. If the plan is dense and sparse vectors with a combined query, stay on a vector index, where hybrid search is a single call.",[320],"Both kinds are available on every plan. The decision is not about licensing; it is about permanence.",{"type":130,"level":131,"id":110,"text":111},{"type":123,"content":323},[324],"Four plans, and each has a different shape. Starter is free with hard ceilings, Builder is a flat $20 with hard ceilings, and Standard and Enterprise are usage-based behind a monthly minimum that behaves as a commitment rather than a fee.",{"type":326,"head":327,"rows":336},"table",[328,330,332,334],[329],"",[331],"Starter",[333],"Standard",[335],"Enterprise",[337,346,354,363,372,380],[338,340,342,344],[339],"Monthly minimum",[341],"$0",[343],"$50",[345],"$500",[347,349,351,353],[348],"Storage",[350],"Up to 2 GB",[352],"Unlimited at $0.33 per GB per month",[352],[355,357,359,361],[356],"Write units",[358],"Up to 2M per month",[360],"Unlimited at $4 to $4.50 per million",[362],"Unlimited at $6 to $6.75 per million",[364,366,368,370],[365],"Read units",[367],"Up to 1M per month",[369],"Unlimited at $16 to $18 per million",[371],"Unlimited at $24 to $27 per million",[373,375,377,379],[374],"Egress",[376],"1 GB per month",[378],"100 GB included, then $0.10 per GB",[378],[381,383,385,387],[382],"Governance",[384],"Community support, one project",[386],"SSO, RBAC, backups and restore",[388],"Audit logs, private endpoints, CMK, SCIM, 99.95% SLA",{"type":123,"content":390},[391],"Three notes. The $50 and $500 minimums are billed as a top-up line when usage is below them, so a quiet month still costs the minimum. Read units cost four times what write units cost on Standard, which means a read-heavy retrieval application is dominated by a single line. And the flat-fee plans do not degrade gracefully — past the allowance, in-scope reads are blocked with a 429 rather than billed, which is a very different failure mode from a surprise invoice, and arguably the better of the two.",{"type":123,"content":393},[394],"Standard and Enterprise also unlock what a production deployment eventually needs: import from object storage at $0.25 per GB, backups at $0.10 per GB per month, restores at $0.15 per GB, and dedicated read nodes, which are not metered in read units at all and are priced by provisioned capacity instead. Dedicated read nodes are the feature to understand before concluding that Pinecone is too expensive, because they break the read-unit formula that drives the rest of this article.",{"type":130,"level":131,"id":113,"text":114},{"type":123,"content":397},[398],"The comparison worth making is not against every vector database. It is against the two that break the Pinecone model in a specific, structural way.",{"type":326,"head":400,"rows":408},[401,402,404,406],[329],[403],"Pinecone",[405],"Qdrant",[407],"pgvector",[409,418,426,435,444],[410,412,414,416],[411],"Licence and hosting",[413],"Proprietary; managed serverless on AWS, Azure or GCP",[415],"Apache-2.0; self-hosted or Qdrant Cloud",[417],"PostgreSQL licence; a column in your own database",[419,420,422,424],[13],[421],"One index holds dense, sparse and BM25, but a document index ranks by one signal per request",[423],"One query mixes dense, sparse and BM25 scores",[425],"You combine ts_vector and a vector index yourself",[427,429,431,433],[428],"Cost of a query",[430],"1 read unit per GB of namespace, 0.25 minimum",[432],"The machines you run, or Cloud nodes",[434],"Part of the Postgres bill you already pay",[436,438,440,442],[437],"Changing the shape",[439],"Schema cannot change; recreate the index and re-ingest",[441],"Payload fields are added without a rebuild",[443],"ALTER TABLE, then build the ANN index",[445,447,449,451],[446],"SQL and joins",[448],"None; no joins, no transactions",[450],"None; filtering through payload",[452],"Full SQL over vectors and rows together",{"type":123,"content":454},[455],"The honest summary of that table: pgvector wins on everything except scale, and the threshold sits somewhere around ten million vectors, past which index build times and recall tuning in PostgreSQL stop being a reasonable afternoon. Qdrant wins on control and on hybrid search in a single query, and loses on the fact that somebody has to run it. Pinecone wins on time to first query and on not needing an on-call rotation for a search service, and loses on cost per query once the index grows and on the fact that the shape of the data cannot be changed after the fact. Those are the trade-offs; none of them is a bug.",{"type":130,"level":131,"id":116,"text":117},{"type":123,"content":458},[459],"Pinecone is the right default for the first ninety days of a retrieval feature, and a defensible choice for years if the workload is small, well partitioned and heavy enough to sit on the read-unit floor. It stops being the right answer when the index passes a few gigabytes, when a compliance requirement needs an SLA or audit logs, or when the shape of the corpus is still moving.",{"type":136,"ordered":461,"items":462},true,[463,465,467,469,471],[464],"Adopt it when nobody is going to own a search cluster. The free tier is genuinely useful and the first paid step is $20 flat.",[466],"Partition by namespace before the index is large, not after. That single decision sets the read bill and is much harder to change later.",[468],"Do not adopt it for a corpus whose fields are still in flux on a document index, because schema migration is not supported.",[470],"Run the numbers with your own namespace size. The read-unit formula in the documentation is short enough to work out by hand.",[472],"Look at Qdrant when the index will pass ten million vectors, and at pgvector when it will stay well under a million and a database administrator already exists.",{"type":280,"variant":474,"title":475,"body":476},"tip","If you are choosing today",[477,479],[478],"The [pgvector comparison](\u002Fblog\u002Fpgvector-vs-vector-databases) covers the open-source side in more depth, and [hybrid search and reranking](\u002Fblog\u002Frag-pipeline-chunking-hybrid-search-reranking) covers what actually moves recall.",[480],"Retrieval quality is decided by chunking, embedding choice and reranking long before it is decided by the index implementation. Choosing a managed database on retrieval-quality grounds is choosing on the least important variable.",{"type":130,"level":131,"id":119,"text":120},{"type":136,"ordered":461,"items":483},[484,488,491,494,497,500,503,506],[485],{"tag":486,"href":36,"children":487},"a",[35],[489],{"tag":486,"href":39,"children":490},[38],[492],{"tag":486,"href":42,"children":493},[41],[495],{"tag":486,"href":45,"children":496},[44],[498],{"tag":486,"href":48,"children":499},[47],[501],{"tag":486,"href":51,"children":502},[50],[504],{"tag":486,"href":54,"children":505},[53],[507],{"tag":486,"href":57,"children":508},[56],[510,558,610,652],{"slug":511,"published":512,"minutes":6,"category":7,"tags":513,"keywords":518,"about":527,"sources":531,"cover":550,"og":551,"expertise":60,"locales":552,"lang":62,"title":553,"description":554,"coverAlt":555,"url":556,"pricing":557,"kind":514},"zep","2026-10-06",[514,515,516,517,11],"Agent memory","Knowledge graph","Temporal graph","Context engineering",[519,520,521,522,523,524,525,526],"zep ai","zep agent memory","graphiti knowledge graph","zep pricing","zep vs mem0","long-term memory for agents","temporal knowledge graph","zep cloud",[528],{"name":529,"url":530},"Zep","https:\u002F\u002Fwww.getzep.com\u002F",[532,535,538,541,544,547],{"title":533,"url":534},"Zep pricing: plans, credits and limits","https:\u002F\u002Fwww.getzep.com\u002Fpricing",{"title":536,"url":537},"Zep documentation","https:\u002F\u002Fhelp.getzep.com\u002F",{"title":539,"url":540},"Graphiti on GitHub","https:\u002F\u002Fgithub.com\u002Fgetzep\u002Fgraphiti",{"title":542,"url":543},"Graphiti product page","https:\u002F\u002Fwww.getzep.com\u002Fplatform\u002Fgraphiti\u002F",{"title":545,"url":546},"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":548,"url":549},"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",[62,63,64],"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":559,"published":560,"minutes":561,"category":7,"tags":562,"keywords":564,"about":572,"sources":577,"cover":602,"og":603,"expertise":60,"locales":604,"lang":62,"title":605,"description":606,"coverAlt":607,"url":608,"pricing":609,"kind":25},"lancedb","2026-09-21",9,[9,13,563,11],"Embedded database",[559,565,566,567,568,569,570,571],"lancedb review","lance vector database","embedded vector database","lancedb vs qdrant","hybrid search rrf","lancedb indexing","lance data format",[573,574],{"name":25,"url":26},{"name":575,"url":576},"Apache Arrow","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FApache_Arrow",[578,581,584,587,590,593,596,599],{"title":579,"url":580},"LanceDB quickstart","https:\u002F\u002Fdocs.lancedb.com\u002Fquickstart",{"title":582,"url":583},"LanceDB vector indexes","https:\u002F\u002Fdocs.lancedb.com\u002Findexing\u002Fvector-index",{"title":585,"url":586},"LanceDB indexing guide","https:\u002F\u002Fdocs.lancedb.com\u002Findexing\u002Findex",{"title":588,"url":589},"LanceDB hybrid search","https:\u002F\u002Fdocs.lancedb.com\u002Fsearch\u002Fhybrid-search",{"title":591,"url":592},"LanceDB Enterprise","https:\u002F\u002Fdocs.lancedb.com\u002Fenterprise",{"title":594,"url":595},"LanceDB frequently asked questions","https:\u002F\u002Fdocs.lancedb.com\u002Ffaq\u002Ffaq-oss",{"title":597,"url":598},"LanceDB pricing","https:\u002F\u002Flancedb.com\u002Fpricing",{"title":600,"url":601},"LanceDB on PyPI","https:\u002F\u002Fpypi.org\u002Fproject\u002Flancedb\u002F","\u002Fimages\u002Fblog\u002Flancedb\u002Fcover.webp","\u002Fimages\u002Fblog\u002Flancedb\u002Fog.jpg",[62,63,64],"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",{"slug":407,"published":560,"minutes":611,"category":7,"tags":612,"keywords":616,"about":623,"sources":629,"cover":644,"og":645,"expertise":60,"locales":646,"lang":62,"title":647,"description":648,"coverAlt":649,"url":625,"pricing":650,"kind":651},10,[9,613,614,11,615],"Postgres","HNSW","Quantisation",[407,617,618,619,620,621,622],"pgvector vs qdrant","postgres vector search","hnsw index postgres","iterative index scans","binary quantization postgres","vector database postgres",[624,626],{"name":407,"url":625},"https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector",{"name":627,"url":628},"PostgreSQL","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPostgreSQL",[630,632,635,638,641],{"title":631,"url":625},"pgvector README",{"title":633,"url":634},"pgvector changelog","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector\u002Fblob\u002Fmaster\u002FCHANGELOG.md",{"title":636,"url":637},"PostgreSQL news: pgvector 0.8.2 released","https:\u002F\u002Fwww.postgresql.org\u002Fabout\u002Fnews\u002Fpgvector-082-released-3245\u002F",{"title":639,"url":640},"AWS: Scale pgvector with binary quantization","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdatabase\u002Fscale-pgvector-with-binary-quantization-on-amazon-aurora-postgresql\u002F",{"title":642,"url":643},"pgvector licence","https:\u002F\u002Fgithub.com\u002Fpgvector\u002Fpgvector\u002Fblob\u002Fmaster\u002FLICENSE","\u002Fimages\u002Fblog\u002Fpgvector\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fpgvector\u002Fog.jpg",[62,63,64],"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.","PostgreSQL licence","Vector database extension",{"slug":653,"published":654,"minutes":611,"category":7,"tags":655,"keywords":657,"about":663,"sources":667,"cover":695,"og":696,"expertise":60,"locales":697,"lang":62,"title":698,"description":699,"coverAlt":700,"url":666,"pricing":701,"kind":514},"mem0","2026-09-17",[514,656,11,9],"Long-term memory",[653,658,659,660,661,524,662],"mem0 review","agent memory layer","mem0 self-hosted","mem0 pricing","mem0 alternatives",[664],{"name":665,"url":666},"Mem0","https:\u002F\u002Fmem0.ai",[668,671,674,677,680,683,686,689,692],{"title":669,"url":670},"Mem0 documentation","https:\u002F\u002Fdocs.mem0.ai\u002Fintroduction",{"title":672,"url":673},"Mem0 quickstart","https:\u002F\u002Fdocs.mem0.ai\u002Fquickstart",{"title":675,"url":676},"How Mem0 works","https:\u002F\u002Fdocs.mem0.ai\u002Fcore-concepts\u002Fhow-it-works",{"title":678,"url":679},"Mem0 pricing","https:\u002F\u002Fmem0.ai\u002Fpricing",{"title":681,"url":682},"Mem0 on GitHub","https:\u002F\u002Fgithub.com\u002Fmem0ai\u002Fmem0",{"title":684,"url":685},"mem0ai on PyPI","https:\u002F\u002Fpypi.org\u002Fproject\u002Fmem0ai\u002F",{"title":687,"url":688},"Mem0 research and benchmarks","https:\u002F\u002Fmem0.ai\u002Fresearch",{"title":690,"url":691},"Mem0 MCP server","https:\u002F\u002Fdocs.mem0.ai\u002Fplatform\u002Fmem0-mcp",{"title":693,"url":694},"Mem0 paper on arXiv","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.19413","\u002Fimages\u002Fblog\u002Fmem0\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fmem0\u002Fog.jpg",[62,63,64],"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",1791383548904]