|
| ▲ | CuriouslyC 4 days ago | parent | next [-] |
| I'm a legit postgres fanboy, my comment history will back this up, but the ops overhead and performance implications of trying to run PGvector as your core vector store for everything is just silly, you're going to be doing all sorts of postgres replication gymnastics to make up for the fact that you're using the wrong tool for the job. It's good for prototyping and small/non-core workloads, use it outside that scope at your own peril. |
| |
| ▲ | alastairr 3 days ago | parent | next [-] | | Interested to hear any more on this. I've been using pinecone for ages, but they recently increased the cost floor for serverless. I've been thinking of moving everything to pgvector (1M ish, so not loads), as all the bigger meta data lives there anyway. But I'd be interested to hear any views on that. | | |
| ▲ | CuriouslyC 3 days ago | parent | next [-] | | It depends on your flow honestly. If you're just using your vectors for where filters on domain objects and you don't have hundreds of millions of vectors PGVec is fine. If you have any sort of workflow where you need low latency access to vectors and reliable random read performance, or where vector work is the bottleneck on performance, PGVec goes tits up. | |
| ▲ | whakim 3 days ago | parent | prev [-] | | At 1M embeddings I'd think pgvector would do just fine assuming a sufficiently powerful database. |
| |
| ▲ | j45 3 days ago | parent | prev | next [-] | | Appreciate the clarification. I have been using it for small / medium things and it's been OK. The everything postgres as long as reasonably possible approach is fun, but not something I expect to last for ever. | |
| ▲ | cpursley 3 days ago | parent | prev [-] | | Guess I'm just not webscale™ |
|
|
| ▲ | whakim 3 days ago | parent | prev | next [-] |
| It depends on scale. If you're storing a small number of embeddings (hundreds of thousands, millions) and don't have complicated filters, then absolutely the convenience factor of pgvector will win out. Beyond that, you'll need something more powerful. I do think the dedicated vector stores serve a useful place in the market in that they're extremely "managed" - it is really really easy to just call an API and never worry about pre- or post- filtering or sharding your index across a large cluster. But they also have weaknesses in that they're usually optimized around small(er) scale where the bulk of their customers lie, and they don't really replace an actual search system like ElasticSearch. |
|
| ▲ | cpursley 4 days ago | parent | prev [-] |
| Also, no way retrieval performance is going to match pgvector because you still have to join the external vector with your domain data in the main database at the application level, which is always going to be less performant. |
| |
| ▲ | jitl 3 days ago | parent | next [-] | | i'll take a 100ms turbopuffer vector search plus a 50ms postgres-select-where-id-in over a 500ms all-in-one pgvector + join query. When you only need to hydrate like 30 search result item IDs from Postgres or memcached i don't see the join being "too expensive" to do in memory. | |
| ▲ | CuriouslyC 4 days ago | parent | prev [-] | | For a large class of applications, the database join is the last step of a very involved pipeline that demands a lot more performance than PGVector can deliver. There are also a large class of applications that don't even interface with the database directly, except to emit logging/traceability artifacts. |
|