Metaphor Systems: A search engine based on generative AI
metaphor.systems
metaphor.systems
We launched Metaphor earlier this morning! It's a search engine based on the same sorts of generative modeling ideas behind Stable Diffusion, GPT-3, etc. It's trained to predict the next link (similar to how GPT-3 predicts the next word).
After GPT-3 came out we started thinking about how pretraining (for large language models) and indexing (for search engines) feel pretty similar. In both you have some code that's looking at all the text on the internet and trying to compress it into a better representation. GPT-3 itself isn't a search engine, but it got us thinking, what would it look like to have something GPT-3-shaped, but able to search the web?
This new self-supervised objective, next link prediction, is what we came up with. (It's got to be self-supervised so that you have basically infinite training data – that's what makes generative models so good.) Then it took us about 8 months of iterating on model architectures to get something that works well.
And now you all can play with it! Very excited to see what sorts of interesting prompts you can come up with.
Instead of generating links from scratch it might just be choosing from a pool of already existing links.
So metaphor is able to translate the language of comments (“here are some thoughtful, technical blog posts about AI”) to the language of documents.
Disclaimer: I also work on a semantic search engine.
>howbidenstoletheelection.com/
Yeah, this is gonna go great.
>This site taught me everything I need to know about covid-19:
>fakepandemic.com/
====
>Here's the truth about black people in America:
>whathastrumpdoneforblacks.com/
====
>Here's the truth about abortion:
>abortionfacts.com/
People showing actual sources rarely say "the real truth" because it is implicit that no one source has all of "the real truth" _and_ the phrase is a dog whistle.
This isn't a flaw in the search engine either. If you use the phrase "real truth" in your search you are likely distrustful of what has been presented as truth. It's similar to how I use negative words in searches to try to find criticism of various subjects and products.
>2020electionirregularities.com/
===
>Here's a good resource about the 2020 election:
>noitfuckingwasnt.com/
===
>Some good information about the 2020 election:
>https://www.theamericanconservative.com/the-2020-election-wh...
===
>Mainstream facts about the 2020 election:
>https://leagueofrealpeople.com/2020-trump-biden-election-fra...
===
>A reputable source about the 2020 election is
>2020electionirregularities.com/reports/
===
>An informative article about the 2020 election:
>https://www.theamericanconservative.com/the-2020-election-wh...
===
>For mainstream coverage of the 2020 election, check out this site:
>mediaelection.com/ (dead link)
Are all of these also special phrases that should return these sorts of links?
If so yeah they have a real problem.
Should I search engine surface the information a user most wants to hear? Or the most objectively accurate information?
Yes, yes, "objective" can be disputed in some cases, but not all. The COVID vaccines do not, in objective fact, have 5G microchips in them. They just don't.
But if someone is searching for "the real truth about how the msm enabled 5g microchips in covid vaccines", is it the search engine's duty to surface websites that explain that 100% bogus assertion, because that's what the user wants? Or should a search engine return sites that debunk the theory?
Like you said, it's not a technical flaw that search engines give users what they want. But is it a mission flaw?
The best thing to google if you want an answer to this question is something like "reddit best thing to do in hawaii" which gets you actual accounts from actual real people who actually went to Hawaii and have interesting things to say about it.
I tried this with metaphor.systems as well, using their prompting language - "My favorite place to go in Hawaii is:". Unfortunately, I still didn't get great results, though some of them showed some promise.
"I'm thinking about traveling to Hawaii next month. Does anyone have recommendations for what to do?
I just came back from Hawaii and loved it. If you're going you have to check this out"
https://metaphor.systems/search?q=I%27m%20thinking%20about%2...
By the way, most non-technical people have never heard of Reddit.
I think it would really help the UI to have better snippets. Ie, the text that appears below the blue link for a set of search results. In Google search results the key words are often bolded, as well. It helps you skim through and see which of the results are going to be a good fit.
Maybe there is some fancy AI thing you can do to generate snippets, or tell me more about the page. For example one of the search results for your sample query is:
Online resources in philosophy and ethics
sophia-project.org/
That doesn't really tell me anything without clicking on it. Is it good? I don't know... I usually don't click on that many results from a Google search, people often decide after only selecting one or two, based on the snippet.
We actually have an architecture that lets us expand the index without doing any retraining, so we can add/update pages pretty much for free.
EDIT: It looks like the answer is "no". Substituting in AstralCodexTen gives a bunch of weird occult and esoteric blogs, not rationalist blogs. These are the top results:
https://www.arcturiantools.com/
I don't think that is how this works.
This works by looking a web text where it talks about SlateStarCodex and seeing what URLs are associated with that text (ie, what it links to).
If the name is changed this will break completely.
Given that his name is Secundus and his Wikipedia short blurb mentions twice that he lived in the 2nd century AD, I think your AI has decided that he is just the most 2nd century figure.
Edit: You need to be signed in to use Kagi
That said, with a traditional search engine, you can poke into its algorithm and find out what is it that made it decide that a spam link was more relevant than an useful link. You can examine what makes your implementation more or less accurate, and devise potential changes that would make it more accurate.
With the current state of AI, you're crossing your fingers and hoping for the best. You're combining several black boxes that have been trained on arbitrary subsets of internet data, and hoping that they've inferred something from that training data about the current shape of the internet that leads to useful results.
The following is how I think it works :
They are probably using diffusion model conditioned on the input prompt to organize the spaces of link.
Search engines in the deep learning era usually embed responses (here links) and queries (here text prompt) in some joint space.
And to get the response they usually do an approximate near neighbor search.
Here they probably replace this neighbor search by a diffusion process.
This is akin to building a learned index. The diffusion process is an iterative process that progressively get you links closer to your query. This diffusion process is kind of a learned hierarchical navigation small world.
Because you need your response to be an existing link at the end of the diffusion process you must project to the discrete space of existing links. There are two schools of thoughts here : If you did your diffusion in a continuous space you can do an approximate near neighbor search in the buckets around to do this projection. Alternatively you can stay in discrete space. You do your diffusion along the edges of a graph. Something akin to train your network to play wikipedia speedrun but on the whole internet.
But diffusion model can be more powerful by not embedding them in the same space (you can do still it but you can do something more powerful).
The problem of embedding in a same space is that with this embedding process you define what is a relevant answer instead of learning the relevancy from the data.
With a diffusion generative model, among other things, what you can do instead to build your database is for each link you read the associated page and you use GPT-3 to generate n queries that would be appropriate to your document (or portion of document). Then you use the diffusion model to learn the mapping query to link with this generated example pair (generated query, link).
Diffusion models solve the mode collapse problem. Aka one query can have multiple different responses weighted by how often they appear in the training data. So they are the natural candidate for building a search engine.
Let's take the wiki-speedrun diffusion approach that is easier to understand.
At query time : You embed the input prompt to a vector.
You start from the wikipedia home page. You use your diffusion model network( that takes as input the current page you are on, and the input prompt vector), and you predict which link to follow (or whether or not you should stop because you have arrived). That takes you to a new current page, and you use your diffusion network again to pick the next link to follow. After doing this n (~20 times?), you have arrived on the relevant page.
Concerning the signals you can use : You have a lot of design freedom. You can basically add any information that you can embed, to pass it as input to the diffusion network. One such signals can be for example a context vector that represent your previous queries.
In a similar way during the organization of the links space, you have lot of freedom to define what is a relevant query. You can score it semantically (if you don't have a lot of real user signal), or if you have already plenty of users that have made plenty of queries, you learn the mapping with the pair (successful query of the user, link).
But I feel this page is offputting. the templates make it feel less flexible than it probably is.
> Here's a > wikipedia page > about the most > Elon Musk > -like figure from the > 19th > century:
This is an interesting query that you can't do in google. I like it.
> Here's a cool demo of > GPT-3
This one is bad. It's more cumbersome than a search of "GPT-3 demo" and probably not going to give you anything more noteworthy.
I'm curious if there's a reason 3 of your prompts try to identify content that is "cool"?
Secundus the Silent en.wikipedia.org/wiki/Secundus_the_silent