Show HN: GPT-4-powered web searches for developers (phind.com)

1401 points by rushingcreek ↗ HN
Hi HN,

Today we’re launching GPT-4 answers on Phind.com, a developer-focused search engine that uses generative AI to browse the web and answer technical questions, complete with code examples and detailed explanations. Unlike vanilla GPT-4, Phind feeds in relevant websites and technical documentation, reducing the model’s hallucination and keeping it up-to-date. To use it, simply enable the “Expert” toggle before doing a search.

GPT-4 is making a night-and-day difference in terms of answer quality. For a question like “How can I RLHF a LLaMa model”, Phind in Expert mode delivers a step-by-step guide complete with citations (https://phind.com/search?cache=0fecf96b-0ac9-4b65-893d-8ea57...) while Phind in default mode meanders a bit and answers the question very generally (https://phind.com/search?cache=dd1fe16f-b101-4cc8-8089-ac56d...).

GPT-4 is significantly more concise and “systematic” in its answers than our default model. It generates step-by-step instructions over 90% of the time, while our default model does not.

We’re particularly focused on ML developers, as Phind can answer questions about many recent ML libraries, papers, and technologies that ChatGPT simply cannot. Even with ChatGPT’s alpha browsing mode, Phind answers technical questions faster and in more detail.

For example, Phind running on “Expert” GPT-4 mode can concisely and correctly tell you how to run an Alpaca model using llama.cpp: (https://phind.com/search?cache=0132c27e-c876-4f87-a0e1-cc48f...). In contrast, ChatGPT-4 hallucinates and writes a make function for a fictional llama.cpp.

We still have a long way to go and would love to hear your feedback.

438 comments

[ 3.7 ms ] story [ 479 ms ] thread
this looks great. what is 'çreative' doing under the hood?
thanks! 'Creative' mode puts less emphasis the web results we feed in and allows the model to say things that aren't explicitly fed in (and potentially hallucinate more).
which model though ? GPT-4 ?
This worked well for the one sample query I tried. Running unlimited GPT-4 API calls (plus search API calls maybe?) for people sounds expensive.

What is your monetization strategy for this tool?

Thanks! We're going to have a 'Pro' tier where users can ask much longer questions and paste in longer code snippets among other productivity-focused features.
So you’re going to encourage people to paste in code, likely from work, into GPT-4?
We're working on building out our own models of similar quality that will have stricter privacy guarantees.
If you could find a way to run your functionality on Azure, it would open a lot of doors to well-paying potential customers. Microsoft is now offering OpenAI models on Azure, with the value proposition being "we offer SLA" and "complies with your data protection policies", which alone turns it into something you can actually use in a large company, as opposed to OpenAI's offering.
"We're building a road" So, you're encouraging employees to be reckless with the company cars?
(comment deleted)
I have been using phind on and off for a few months. I found it amazing for discovery of software libs for a project I was working on. I could not find the libs when searching google, etc, but found them through phind.

When I compared the output of phind to GPT-3 I found phind vastly superior for this kind of discovery. Were you previously augmenting the expert with GPT-3 or was it some custom model?

Best of luck for the new launch!

Love to hear it! Expert mode is a new feature that has always been GPT-4 augmented with our custom web context.
I didnt mean expert mode. I mean the AI answer thing. That definitely predated GPT-4, no?
Yes, we launched in January 2022 using our own models exclusively. We generally use a combination of our own models + OpenAI but are transitioning increasingly to our own models once again.
I haven't been impressed with the GPT for X thus far but having it filter search results sounds excellent. If it could figure out which results are not SEO junk then Google would be fixed.
It’s totally possible right now but at .002c for 750 words it could easily cost 10c for a single search.
Nice - I've used the product before but noticed it sometimes gives hallucinated answers if I ask something for which there's no good google result. Is this something you plan on addressing soon?
I think that's kind of the problem with these tools lol, there is no obvious solution to this. Automatically fact checking an AI model would probably require a bigger and more sophisticated AI model.

E: That said this does look sick

We've tried to mitigate this recently. Does it still happen with Expert mode? If you have any examples, please send them my way and I'll talk a look at how we can address them.
What is your monetisation strategy?
I tried "What features were added in the latest golang version", but it's convinced 1.18 instead of 1.20 is the latest version. When I asked about the latest version it told me it's 1.19rc2 and gave me instructions to install it via a "go get ...", which is not possible without having it installed in the first place.

I really wish for a better search these days, but instead of grinding everything through an LLM I would much prefer better presentation of the original information. In fact in the best case it would filter all generated content.

Thanks for the example. Asking about the most recent version of something is something we'll work on, but it should give you good results if you ask it about a specific version. E.g. "What features were added in golang 1.20"
How does it know about Pope in puffer jacket?
Passes my smell test, which is to ask "how do I migrate my swift composable architecture project to structured concurrency". This uses 2 things that GPT-4 doesn't know about yet: Swift 5.5+ and composable architecture 1.0+

It pulled in information from both Apple, the composable architecture folks and a swift forums post to give a really nice answer.

Well done! I'll be using this a lot.

I'd love to know more about how you pull in relevant text from web results for it to use in answers.

That's our secret sauce :)

We've built out a decently complex pipeline for this, but a lot of the magic has to do with the specific embedding model we've trained to know what text is relevant to feed in and what text isn't.

This is a really cool tool. Have you considered filtering known blog-spam/low-quality content mill/SEO'ed garbage type sites (ie: GeeksForGeeks, W3Schools, TutorialsPoint)? That would make me definitely jump on this, and even pay for a subscription. I spend way too much time having to scroll down Google past all this junk before I hit the official documentation for module I'm using.
You can always remove your hated sites on Google search as well. For example:

Python list -w3schools

It will not include links contain the text

I know, it's just irritating to have to do that, or have an extension do it. I would be happy to support a search engine that lets me filter out unwanted crud.
i don't think they really need to...maybe for citations but for training if the content is the same on site A and B it doesn't matter which one it pulled from.

that said.. if the content itself is bad then that'd be a problem. we'll probably start seeing that, sites designed to poison LLMs.

(comment deleted)
Any pointers on how to build custom embedding ? I am working on a specialized domain where words may mean different things than rest of the world. I want to create my own embeddings, which I suspect would help. Any pointers ?
Doesn’t ChatGPT bring that through plug-ins? Also bing chat
>This uses 2 things that GPT-4 doesn't know about yet: Swift 5.5+ and composable architecture 1.0+

Conversely, I asked it to tell me the current version of .Net Core. It returned version 6, the same answer as GPT-4, but the right had frame did return results indicating that version 7 is in fact the current release.

I tried it with exactly one query, something specific that had come up recently in my work. I was looking for one sentence of answer. It was terrible, giving me 500 words of blather, much of which which was irrelevant and some of which was 100% wrong. It was absolutely the arrogant kid who had skipped most of the lectures but who expected to be able to BS through the exam enough to pass the class.

For my needs it was a pure waste of time, and it would have been a bigger waste of time had I not already known enough to judge its output. So I would call this worse than Google and also worse than nothing at all. I suspect this is an inherent problem with LLMs, not something fixable. But in the spirit of constructive criticism, I'd suggest you consider that for programming use cases, no answer is better than a bad answer.

Sorry to hear this. What did you ask? And was it on Expert mode?
I asked for alternatives to a python library. I did not turn on expert mode because it wasn't clear to me what that meant: expert in the topic, expert in using your tool, maybe something else. I tried turning that on just now and it gave me an answer that looked worse, but so slowly that I gave up before I got to the end.
> I did not turn on expert mode because it wasn't clear to me what that meant: expert in the topic, expert in using your tool, maybe something else

Fair as someone coming in blind, but the post here did explicitly tell you to use it and why.

What was the query?

> Fair as someone coming in blind, but the post here did explicitly tell you to use it and why.

A protip for you: there are few better ways to make a bad product than complaining that the users are doing it wrong. The users are going to keep using it like users do. You either adapt the product, filter for a different set of users, or expect to keep keep generating bad user experiences.

Here, I clicked on the product link on the HN home page, only later going to the discussion that you apparently wanted me to read first. If you really want me to knowt that first, either make it the default or put it on the product page, not buried in 6 paragraphs of gray-on-cream text on a page I may not see until after I've tried it.

I said it was fair as someone coming blind, but you came to a show hn and didn't read the post, had a problem with something you didn't understand and then complained about it. You may find some benefit in reading docs when having problems with tools.

I have nothing to do with phind by the way.

> gray-on-cream text on a page I may not see until after I've tried it.

I'm on board with complaints about hns terrible accessibility.

They asked for user feedback. I gave them user feedback, using it a typical user would. If they believe the right way to use their product is to require reading an HN post first, they are welcome to put that on the homepage. If they don't, then what they said here is irrelevant.
As I said, fair comment for someone coming in blind. But perhaps it would have been more useful if you'd used the feature they were announcing before commenting on the thread about that announcement.

> If they don't, then what they said here is irrelevant.

Then show hns should have no text content at all.

Look, this is quite simple. It's totally fair to explain the confusion about what expert mode means. It's totally fair to say hns ui is absolutely awful.

It's just much less useful if you come to a show hn about a feature launch, don't use the feature being launched then complain about it without providing enough information to replicate the problem.

I won't respond from this point as it's getting rather circular unless you really want me to.

My test query is "why LOLIN S3's LED is not working". All LLM failed on that query, this included.
(comment deleted)
What’s your business model for this? Free GPT-4 seems too good to be true…

whats the catch?

No catch. The feedback we get from this Show HN helps us improve and pays for itself.
But at some point you have to pay your GPT-4 bill, right? What’s the plan there?
I don't think they have a plan...

Just riding the hype and for someone else to upend them or will run out of cash when OpenAI increases their prices and will have to run back to VCs for more money.

Whichever comes first.

Indeed, would love a clarification from OP. But given the tool's apparent quality it's very likely that it'll be SaaS'd after a trial MvP run.
How are you using GPT-4 if there is no API for it currently?
There... is.
It is not generally available though?
I signed up to the GPT4 waitlist the first day and I still don't have access.

As these AI models get more powerful, giving certain people months to use them while the rest of us twiddle our thumbs seems unfair. It should be everyone has access but you only get X API requests per day. Then increase X for all users evenly. If OpenAI isn't going to be open, at least they could be a little more fair with access.

I got access like a week after and I'm of no important status and haven't spent more then 10USD on their api - but I think it's based on the age of the account, I paid for chatGPT premium as well.

But I do believe the api is accessible to non-megacorporations.

It's waitlist only although I got invited rather quickly.

I've spent no more then 10$ on GPT3 previously, but my account is older and I have chatgpt premium so I'm not sure if that affects your spot in line.

But non-megacoorperations do have access

(comment deleted)
I couldn't find anything regarding pricing or a business model. Is this free for now for testing, soon to follow a SaaS model later on?
There will always be a free version but we are planning on introducing a pro version -- similar to ChatGPT Plus.
I asked it this question[1],

    I traverse a maze using a basic A* implementation (using the Manhattan distance metric). However, after the traversal, I would like to find out what wall would give me the best alternative path. Apart from removing every block and re-running A* on the maze, what's a more clever and elegant solution?
a question I asked on SO over 10 years ago. The SO thread includes working code and very friendly explanations and discussion. The answer Phind gives is the following[2]. It tells me to use D*-lite (complete overkill), Theta* (totally wrong), or "Adaptive-A*" (not sure if that's an actual thing, all I can find is a random paper).

I was working on this in the context of a game I was making at the time, and while this is certainly a hard (and maybe rare) question, it's still on the level of CS undergrad.

[1] https://stackoverflow.com/questions/2489672/removing-the-obs...

[2] https://www.phind.com/search?cache=d08cd0e7-4aa8-4d75-b1cd-7...

I asked OpenAI that exact question, this is what it said:

> One approach to finding the wall that would give you the best alternative path without having to remove every block and re-run A* is to use the concept of "edge weights."

> When you first run A* to traverse the maze, you can assign each edge a weight equal to the distance between the two adjacent nodes, which is equal to the Manhattan distance in your case. Once you have completed the traversal, you can go through each edge of the path that A* has found and temporarily increase its weight by some factor. Then, you can run A* again, but this time the pathfinder will prefer alternative paths that do not use those edges that have been "blocked" by the increased weight.

> By gradually increasing the weight of each edge one at a time, you can determine which wall would give you the best alternative path without having to re-run A* on the entire maze every time. You can also use a binary search-like approach to speed up the process.

> Here's some pseudocode for this approach:

    path = A_star(start_node, goal_node, edge_weights)
    
    for edge in path:
        original_weight = edge_weights[edge]
        edge_weights[edge] = original_weight * factor
        new_path = A_star(start_node, goal_node, edge_weights)
        if new_path is better than path:
            best_wall = edge
            path = new_path
        edge_weights[edge] = original_weight
> In this pseudocode, factor is the amount by which you increase the weight of each edge, and better than is some metric for determining whether a path is better than another (e.g., if it is shorter or has fewer turns).

Followed by this question: List ten most relevant links to the information you have summarized above.

> Here are ten relevant links related to A* search and maze traversal:

    "A* search algorithm" on Wikipedia: https://en.wikipedia.org/wiki/A*_search_algorithm
    "Manhattan distance" on Wikipedia: https://en.wikipedia.org/wiki/Manhattan_distance
    "A* Pathfinding for Beginners" tutorial on Red Blob Games: https://www.redblobgames.com/pathfinding/a-star/introduction.html
    "Introduction to A*" video on YouTube by Sebastian Lague: https://www.youtube.com/watch?v=-L-WgKMFuhE
    "A* Pathfinding Visualization" demo on GitHub by Qiao Zhang: https://qiao.github.io/PathFinding.js/visual/
    "A* Pathfinding Tutorial" on Amit's Game Programming Pages: http://theory.stanford.edu/~amitp/GameProgramming/
    "A* Pathfinding Algorithm" tutorial on GeeksforGeeks: https://www.geeksforgeeks.org/a-search-algorithm/
    "Introduction to Pathfinding" tutorial on Unity Learn: https://learn.unity.com/tutorial/introduction-to-pathfinding
    "Pathfinding in Games: A* Search" tutorial on Ray Wenderlich: https://www.raywenderlich.com/3016-pathfinding-in-games-a-search
    "Maze generation algorithm" on Wikipedia: https://en.wikipedia.org/wiki/Maze_generation_algorithm
> These links provide a range of resources, including tutorials, demos, and background information on A* search and maze generation.

Followed by: Please rewrite the lua code to golang.

    path := AStar(startNode, goalNode, edgeWeights)
    
    for _, edge := range path {
        originalWeight := edgeWeights[edge]
        edgeWeights[edge] = originalWeight * factor
        newPath := AStar(startNode, goalNode, edgeWeights)
        if newPath.isBetterThan(path) {
            bestWall := edge
            path = newPath
        }
        edgeWeights[edge] = originalWeight
    }
> In this Go code, AStar is a function that takes in the start and goal nodes, as well as the edge weights, and returns the optima...
> When you first run A* to traverse the maze, you can assign each edge a weight equal to the distance between the two adjacent nodes, which is equal to the Manhattan distance in your case. Once you have completed the traversal, you can go through each edge of the path that A* has found and temporarily increase its weight by some factor. Then, you can run A* again, but this time the pathfinder will prefer alternative paths that do not use those edges that have been "blocked" by the increased weight.

Yeah, this is wrong for two reasons. First, it's actually doing things backwards (you would decrease the cost of a wall, you wouldn't need to block any path). And second, it's still predicated on re-running A* after modifying costs (and comparing it with our original path), getting us back to O(n^n).

This is more evidence that AI models are good at regurgitating, but not great at reasoning. GPT-4 probably only saw this problem once or twice (since it was trained on the Pile, which includes all of SO, including my original question), but not enough times to understand what the solution is (or even what you're asking, for that matter).

The unfortunate part is that OpenAI cannot answer a question “show me most relevant stackoverflow links for my original question”.

Edit: however, I went on and grilled it further.

Question: Rewrite the golang code to solve the maze in constant time.

> I'm sorry, but it is not possible to solve a maze in constant time, as the time complexity of the problem depends on the size of the maze and the complexity of the search algorithm used.

> The A* algorithm and its variants are some of the most efficient and widely used algorithms for maze pathfinding, as they can provide near-optimal solutions in a reasonable amount of time. However, they still have a time complexity that is exponential in the worst case.

> There are other algorithms that can solve certain types of mazes faster than A, such as maze-solving algorithms that rely on distance transforms, flood fills, or topological sorting. However, these algorithms are typically specialized and may not work for all types of mazes.

> In summary, it is not possible to solve a general maze in constant time, but there are specialized algorithms that can solve certain types of mazes faster than A.

A couple of attempts to rephrase make the GPT a bit apologetic. It claims it's not possible to do anything about, eventually, when asked to solve the maze of size 20 times 20, it replies:

> With a maze size of 20x20, it is likely that the performance of the A* algorithm is already sufficient for practical purposes. However, if you encounter performance issues or have specific constraints that require faster solutions, you can consider implementing these optimization techniques.

So I ask it: What optimization techniques I could implement?

> There are several optimization techniques that can be implemented to improve the performance of the A* algorithm or other maze-solving algorithms. Here are some examples:

    Use a more informed heuristic: The Manhattan distance heuristic used in the original code is a good general-purpose heuristic, but it may not be the most efficient for all maze configurations. Using a more informed heuristic, such as Euclidean distance or diagonal distance, can lead to faster convergence and fewer nodes being explored.

    Implement early termination: If you only need a suboptimal solution or are willing to tolerate some error in the solution, you can terminate the search early once a "good enough" solution has been found. For example, you can set a maximum number of nodes to explore or a maximum search depth.

    Prune search space: If you know some parts of the maze are not relevant to the solution, you can exclude those parts from the search space to reduce the number of nodes that need to be explored. For example, if you know the goal is located in a certain region of the maze, you can exclude nodes that are outside of that region from the search space.

    Use a better data structure: The performance of the A* algorithm is heavily dependent on the data structure used to store the open and closed sets. Using a more efficient data structure, such as a binary heap or Fibonacci heap, can speed up the algorithm.

    Parallelize the search: If you have access to multiple processing units, you can split the search space into multiple parts and run the A* algorithm in parallel. This can significantly reduce the search time, especially for large mazes.
> These techniques are not mutually exclusive, and you can combine them in different ways to achieve better performance. However, keep in mind that the optimal combination of techniques will depend on the specifics of the maze-solving problem and the available computational resources.

I still find it pretty good. It also proves my point I was making somewhere else. The challenge in applying GPT to software problems is knowing what to ask next and verifying that it gave a correct answer - as in, one needs to understand the problem without blindly trusting that what it said was right.

The SO answer is pretty good and probably the most generalizable pathfinding solution.

My first thought was to also run A* from the end to the start. This would allow you to look at each wall in the maze and check if the A* cost from the start + A* cost from the end < best current path. In my opinion, this would result in simpler code than the SO solution.

> My first thought was to also run A* from the end to the start. This would allow you to look at each wall in the maze and check if the A* cost from the start + A* cost from the end < best current path. In my opinion, this would result in simpler code than the SO solution.

Yeah, this is the naive O(n^n) solution. Remove every wall, see what path is the cheapest. Having come up with this, I specifically wanted a more elegant solution. As it turns out, you can do it in one shot (but it's a bit tricky).

I am not explaining an O(n^n) solution. Its an O(E) time and O(V) space solution just like normal A*.

I am assuming you are saving the initial A*run and the subsequent reverse run. Then `A* cost from the start + A* cost from the end < best current path` is a O(1) time operation that occurs a maximum of once per edge.

Maybe I'm totally misunderstanding, but figuring out the "best current path" means re-running A* every time you break a wall, as removing arbitrary walls can give you a totally new path to the goal; to wit, it might be a path not even originally visited by A*. And you have to do that every time you try out a wall candidate, so to me this appears to be quadratic(ish) complexity.

(But maybe this is exactly what the SO answer does "under the hood," to be honest, I haven't done a deep complexity analysis of it and I haven't thought about this problem in ages.)

> Maybe I'm totally misunderstanding, but figuring out the "best current path" means re-running A* every time you break a wall, as removing arbitrary walls can give you a totally new path to the goal; to wit, it might be a path not even originally visited by A*. And you have to do that every time you try out a wall candidate, so to me this appears to be quadratic(ish) complexity.

My algorithm should obviously work using Dijkstra's algorithm instead of A*. You just have to make sure ALL nodes are explored. You don't have to run searches per node.

Why it works with A* too is MUCH more subtle. In fact it only works if your A* implementation is fair to all likely shortest paths; most implementations do not guarantee fairness. You can enforce fairness by changing your heuristic to be only 0.9999 * Manhattan distance. Fairness ensures that any path that will be the best path after deleting a wall will have a cost recorded for both sides of the wall.

> (But maybe this is exactly what the SO answer does "under the hood," to be honest, I haven't done a deep complexity analysis of it.)

If the original maze is 2D with coordinates (x,y), the SO algorithm is essentially searching in a 3D maze with coordinates `(x,y, number of times crossed a wall)` and directional edges from `(x,y,n) to (x+dx,y+dy,n+1)` if there is a wall there.*

> My algorithm should obviously work using Dijkstra's algorithm instead of A*. You just have to make sure ALL nodes are explored.

Gotcha, yeah, that's what I was thinking. You lose basically all of A-star's optimization because you do need all nodes explored (turning it into pure Dijkstra). Makes total sense.

> If the original maze is 2D with coordinates (x,y), the SO algorithm is essentially searching in a 3D maze with coordinates

That's a neat way of looking at that answer, cool insight!

An equivalent formulation to the SO solution with a simple implementation is to double the vertices and edges in the graph G by making a duplicate parallel universe G'. One can always move from v in G to its corresponding v' in G' at zero cost, but there is also a cost-1 edge from vertex u in G to v' in G' whenever u and v are separated by a wall. Once one crosses into G', there is no going back.

One can pass the new graph, G ∪ G' plus all the intermediate edges, into the already existing A* implementation to search for an optimal s-t' path. This works as long as the heuristic for v is also admissible for v', but most are. I think all three of these algorithms could in principle run into problems for certain uncommon admissible heuristics.

Here you can apply the most common technique for such problems, which is to create a graph whose vertices are pairs made of a vertex of the original graph, plus the "state" of the traversal (or in other words, the essential information about the path used to reach the vertex).

In this case, the state is the number of walls passed, so just create a graph made of (v, k) pairs where for adjacent v and w in the grid, (v, k) connects to (w, k) if there is no wall, and it connects to (w, k + 1) if there is a wall.

Then run A*, finding the shortest path from (start, 0) to (end, 1), reconstruct the path and look at where it transitions from a (v, 0) to a (w, 1) and then return the wall between v and w.

You can use this for all sorts of other constraints, like finding a path that only changes direction up to N times, or a path where you don't get eaten by the monster moving deterministically (in this case the state is the monster position), or a path where you spend up to N time underwater consecutively, etc.

But GPT-4 seems very bad at solving problems, so even though this is an easy problem, it's not unexpected that it would not come up with this solution.

LLMs are notoriously bad at puzzle solving and you gave it a prompt that was very sparse on details. What did you expect?
Not only LLMs. I couldn't answer that prompt.
> find out what wall would give me the best alternative path

This, specifically, and the question as a whole are hard to parse as a human. Before clicking through to the SO link (where there seems to be a lot more context), I wouldn't have guessed the problem you were trying to solve.

I'm curious why you changed the prompt at all? Was it to get the model to avoid your question's SO page?

Really?

Just that quote alone seemed pretty clear to me, and it becomes even clearer as you read the rest of the prompt.

I found it quite incomprehensible. Particularly the most important bit:

> after the traversal, I would like to find out what wall would give me the best alternative path

Is he talking about adding a wall? Or removing a wall?

> it's still on the level of CS undergrad.

I have 21 years of professional experience as a software engineer with a bachelor in CS before that and have never heard of "Manhattan distance metric", "A* implementation", "D*-lite" or "Theta*" until now. I'm sure if I'd read the explanation of those things I'd eventually figure it out (and I'm sure an LLM would make more sense if fed descriptions instead of gobbledygook.

(comment deleted)
Same. I didn’t learn those things until my Grad CS program.
Wait… you’ve never heard of A*?
This looks quite nice. One suggestion: Use a font with equal-width decimal digits. Otherwise the [0][1][2] links look weird.
It's trained on other peoples (less than great) code? Cause the results I'm getting wouldn't pass my company's code reviews.
I’m really impressed with this. I’ve been using Supabase a lot recently and being relatively new I often end up looking Though GitHub comments for answers.

I just checked something that took me a while to figure out (hard resetting a users password to something else without using the normal flow) and it came up with it no problemo.

Very cool

Thank you :)
Would still love to know how this is going to be funded longer term.

There’s no such thing as a free search.

I tested it out and got some pretty good results - marginally better than GPT4, which is a high bar!

It strikes me that we’ve been clamoring that a better Google needed to exist, and after 20 years, it looks like we actually have one. Albeit right now it’s only better some of the time and only marginally better, and of course it might not be phind that actually takes a whack at Google… but it strikes me as an exciting inflection point.

Thank you! We still have a lot of work to do, of course, and the feedback we get here will directly improve the service.
A better than google has existed for a while now. A new generation of web tools is what we've been asking for.
I'm sorry but what are you referring as better than google?
Kagi, for me
A search engine which requires me to have an account and give them my email address?

No thanks.

Not just that, they even ask for money! Companies these days...
Do you not have a Google account?
You don't need one to perform a search.

And also, no I don't. I also don't have an Apple, Microsoft, Amazon, or other FAANG account.

I'll never understand why privacy minded people (i assume you are, given your aversion to accounts) also seem commonly dependent on supporting the Ad empires which are primarily responsible for the privacy issues of today.

Eg, you should be supporting search engines that respect privacy and offer clear incentives (read: services you pay for) not using Ad dependent services like Google. No?

How do you think a search engine whose incentive isn't getting you to click ads can make money?
It amuses me that not 5 comments up this very same chain there's someone saying they'd happily pay for a Google competitor which is even marginally better.
Google has non-aligned incentives with users and the gulf has been growing. Showing me the best answer is not the goal, showing me an ad is. I’m ready and willing to pay somebody who has a clear incentive to give me correct answers.
That explains why there are more ads, but they still have incentive to improve their search results. They've been using AI for this for years and are even more motivated now.

The problem seems to be that the web itself is getting worse due to SEO. Maybe more AI improvements will overcome that?

Maybe more AI? Surely you mean MOAR AI!!!?!
That’s my point: I want an ANSWER not a LINK. They are incentives to provide the best LINK but not the best ANSWER.

Whereas this product gives answers. Which is why I’m liking it a lot!

I think problem is here that they hit antitrust regulators if they start giving ANSWERS instead of links.
> The problem seems to be that the web itself is getting worse due to SEO. Maybe more AI improvements will overcome that?

SEO will just start to target AI's.. maybe even using AI's to target AI's. The next arms race may be AI vs AI.

I don’t think it’s that easy. You get little feedback about traffic and getting an AI to accurately repeat your ad would be difficult, so this sort of SEO would be much less profitable. It’s too indirect.

Rather than being like advertising, maybe it would be more like PR where your target is journalists and it only indirectly reaches readers?

Well, I am using ChatGPT as a pocket keto nutritionist and it is recommending an actual product brands quite often. Not sure if this is intentional or just learned behavior.
> The goals of the advertising business model do not always correspond to providing quality search to users.

- Sergey Brin and Lawrence Page, The Anatomy of a Large-Scale Hypertextual Web Search Engine

Pretty awesome.

First time that I got reasonable answers from an AI about new technology.

The Go code that it wrote for context cancellation would have resulted in a deadlock.

Cool idea though.

May I ask what the query was?
“Please explain how to use context cancellation in Go.”