AlloyDB AI: Generative AI applications with PostgreSQL
cloud.google.com
cloud.google.com
The closest explanation to a use case architecture I've seen recently was https://mattboegner.com/knowledge-retrieval-architecture-for... - it basically describes doing knowledge retrieval (keyword parsing) from LLM queries, feeding that to a vector db to do similarity search to get a top K similar documents to the parsed keywords, then feeding that list that back into the LLM as potential useful documents it can reference in its response. It's neat but it seems a bit hacky. Is that really the killer app for these things?
Apparently, one of the hardest things to do is to match a product name + description to a product taxonomy.
There are multiple taxonomies. Here's Google's for example: https://www.google.com/basepages/producttype/taxonomy.en-US....
Amazon has their own. Walmart has their own. Target has their own.
Given a list of tens of thousands of products, how can you automatically match the product to a merchant's taxonomy?
I started with a "clever" SQL query to do this, but it turns out that it's way easier to use vector DBs to do this.
1. Get the vector embedding for each taxonomy path and store this
2. Get the vector embedding for a given product using the name and a short description
3. Find the closest matching taxonomy path using vector similarity
It's astonishingly good at doing this and solved a big problem for us which was building a unified taxonomy from the various merchant taxonomies.You can use the same technique to match products with high confidence across merchants by storing the second vector embedding. Now you have a way to determine that product A on Target.com is the same as product A' on Walmart.com is the same as product A'' on Amazon.com by comparing vector similarity.
The easiest way to get started is with Supabase since it has a free tier and the pg_vector plugin built in.
You calculate the embedding using OpenAI's embeddings API and store the result. Then it's just a vector similarity query in Postgres (trivially easy).
Still uses pg_vector.
Slick!
So I guess there is some kind of licensing model even though you can download it and run it on your own servers.
Yes it’s commercial but you can run it on any cloud or on prem.
- Embrace [X]
- Extend [X]
- Extinguish [?]
Will they allow it to use custom embeddings?
I guess my point is that "Embrace, Extend, Extinguish" is a really outdated saying and I hate it. Embracing and Extending are really good things.
In the "Extinguish" stage, the open-standards capabilities are then deprecated in favor of these proprietary technologies — in theory just for the implementation itself, but in practice ecosystem-wide, due to the implementation's majority user share. As the locked-in nature of the component makes it impractical to offer any other implementations of it, all other implementations "fall behind" due to lacking this component, supporting fewer and fewer greenfield projects, until users give up on them, "Extinguishing" their market-share.
The "Extinguish" stage only makes sense insofar as the technologies introduced in the "Extend" stage have inherent implementation lock-in. Otherwise, it's just a regular open-standards dueling-RFC-banjos scenario, not EEE.
With Internet Explorer, the "Extend" phase was when Microsoft attempted to get people to write ActiveX components (that could only ever possibly work on Windows, since the ActiveX "platform API" is just "the entire Windows API") instead of writing JS. If doing this had become popular, no website that did it would have worked on any other browser than IE (and so there would have had to be "the ActiveX-enhanced IE version" and "the regular HTML version" of the site. Which was actually a thing for a short while... though only on Microsoft's own web services, AFAIK.)
Which I doubt EEE is purposeful the majority of the time initially, even if has the potential to become that later. In the case of google I think this would be a case of "how do we add value to our product to sell" followed by "this feature costs us too much resources to maintain, let's cut it and focus on [new feature]"
That being said Postgres is not a good example because AFAIK they're both not a commercial entity (or any registered entity at all?) and they're true FOSS. At the moment they have no commercialization strategy (sponsorships maybe?) and no ability to extinguish anything given their open license and lack of any proprietary services.