Show HN: Phind.com – Generative AI search engine for developers (phind.com)

292 points by rushingcreek ↗ HN
Hi HN,

Today we're launching 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. It's version 1.0 of what was previously known as Hello (beta.sayhello.so) and has been completely reworked to be more accurate and reliable.

Because it's connected to the internet, Phind is always up-to-date and has access to docs, issues, and bugs that ChatGPT hasn't seen. Like ChatGPT, you can ask followup questions. Phind is smart enough to perform a new search and join it with the existing conversation context. We're merging the best of ChatGPT with the best of Google.

You're probably wondering how it's different from the new Bing. For one, we don't dumb down a user's query the way that the new Bing does. We feed your question into the model exactly as it was asked, and are laser-focused on providing developers the most detailed and comprehensive explanations to code-related questions. Secondly, we've focused the model on providing answers instead of chatbot small talk. This is one of the major improvements we've made since exiting beta.

Phind has the creative abilities to generate code, write essays, and even compose some poems/raps but isn't interested in having a conversation for conversation's sake. It should refuse to state its own opinion and rather provide a comprehensive summary of what it found online. When it isn't sure, it's designed to say so. It's not perfect yet, and misinterprets answers ~5% of the time. An example of Phind's adversarial question answering ability is https://phind.com/search?q=why+is+replacing+NaCL+with+NaCN+i....

ChatGPT became useful by learning to generate answers it thinks humans will find helpful, via a technique called Reinforcement Learning from Human Feedback (RLHF). In RLHF, a model generates multiple candidate answers for a given question and a human rates which one is better. The comparison data is then fed back into the model through an algorithm such as PPO. To improve answer quality, we're deploying RLAIF — an improvement over RLHF where the AI itself generates comparison data instead of humans. Generative LLMs have already reached the point where they can review the quality of their own answers as good or better than an average human rater tasked with annotating data for RLHF.

We still have a long way to go, but Phind is state-of-the-art at answering complex technical questions and writing intricate guides all while citing its sources. We'd love to hear your feedback.

Examples:

https://phind.com/search?q=How+to+set+up+a+CI%2FCD+pipeline+...

https://phind.com/search?q=how+to+debug+pthread+race+conditi...

https://phind.com/search?q=example+of+a+c%2B%2B+semaphore

https://phind.com/search?q=What+is+the+best+way+to+deploy+a+...

https://phind.com/search?q=show+me+when+to+use+defaultdicts+...

Discord: https://discord.gg/qHj8pwYCNg

152 comments

[ 916 ms ] story [ 2805 ms ] thread
Is it using the Bing Search API under the hood?
Or DDG?
DDG is using Bing API itself
Good point. With that in mind, e.g. WebChatGPT using DDG may be a matter of working around the Bing API costs.
(comment deleted)
Yep, we do use the Bing API.
Can someone here explain how a solo developer can use bing API. It seems the cost is not cheap, even for basic plan. "1,000 transactions free per month for all markets"

https://www.microsoft.com/en-us/bing/apis/pricing

Thats like 30-searches per day (including any tweaking). How can a solo developer make an MVP based on this?

(comment deleted)
Then why it is saying "Was this answer better than Google?"
Google is still what most people use and our biggest hurdle is getting people to consider using something else. So that's what we compare ourselves to.

Interestingly, the very existence of the new Bing does us a favor in this regard -- it warms people up to the idea of using something other than Google, even if it's just for a subset of searches.

So this project can be summarized in a single HTTP request that takes a prompt, puts some bing results in it, and shows it to the user?
No, we read the websites returned by the web results, feed that into our large language models, and generate an answer based on that.
So this is not based on OpenAI? You have your own language models?
We use a combination of our own language models + OpenAI.
Congrats on the launch! Can you share more information about the intended business model?
Thanks, Vlad. There will always be a free version of Phind. We are thinking about either ads, a ChatGPT-style subscription model, or a combination of the two.
The first question I asked did not end well : « why is computer vision so hard? »

Phind gets the meaning of computer vision completely wrong.

Google got the meaning right, but answers with a bunch of links of dubious quality.

Would you mind sharing what exactly it got wrong and how we can do better?
Computer vision is a specific domain in the tech world. Google it and you will see.
The hints for followup questions is an interesting feature and something that could become a USP for this search engine. The followup questions were at times exactly what I wanted to ask next and sometimes thought-provoking and I was compelled to click and ask them.

The performance could be improved. I've having to wait several seconds before the summary is created.

Thanks! We're pretty excited about that feature. As for latency, it's normally better. We're feeling the HN traffic crunch at the moment and are working on scaling.
Perhaps HN traffic has subsided, but I find it's faster than free chatGPT.
When asked « what is the best time to go skiing? », Phind fixates on Colorado for some reason, then proceeds to delivering a huge blurb about skiing in Colorado ending with « in the end, the best time to go skiing in Colorado is a matter of personal preference ». Well, that was useful.
Well, developers can ski of course. but I think the search engine is focussed on software dev
Indeed I had missed the fact that it was dev oriented. My bad.
Thanks for the feedback. We'll work on improving.

Running this question again, I got:

> For example, ski resorts at Lake Tahoe usually open after Thanksgiving and close in late April, with February offering the best skiing conditions. In Colorado, the ski season generally runs from mid-November through mid-April, with February being the best time to ski due to the deepest base depth of snow on the mountains and plenty of powder still pouring in. However, early snowfall can bring early openings, and the weather can be unpredictable. In Park City, Utah, the best time to ski is from December to March, with January being the busiest month due to the Sundance Film Festival.

On the one hand, you’re right. That’s not a useful answer.

On the other hand, they did state it’s a developer focused search product for technical & factual questions. They’re aiming to make a bot that doesn’t provide opinions, or long convoluted conversations. On that basis your query isn’t a great representation of that.

But what should the answer be anyway? Winter? When there’s snow? When you have a break from work and enough money for a lift pass? When you’re feeling strong and healthy? Should the bot ask you clarifying questions to determine that?

If you asked a person this question they’d either ask you clarifying questions regarding what you actually want to know, or give you a vague answer based on where and when they like to go skiing.

I missed the fact that the engine was dev-oriented. Thank you for pointing that out. My question was too general indeed.
For basics this works very well.

https://phind.com/search?q=How+should+I+filter+a+dictionary+...

https://phind.com/search?q=How+would+I+use+php+to+encode+wit...

https://phind.com/search?q=How+do+I+get+my+data+from+a+datab...

For more complicated prompts it misses the mark a bit but this may be going outside of the intended use case.

https://phind.com/search?q=Create+a+python+class+that+can+pa...

It would be nice if it annotated the projects it suggested in the response. The above query talks about a project called "mov" in the "provided code" but I do not see any code provided.

Thanks for the feedback. The "Create a python class that can parse MP4 headers" question is something that Phind should be able to answer well. If it doesn't give an example immediately, following up with "give me an example" usually works well.

Running it again, I got a code example:

> Create a python class that can parse MP4 headers

> To create a Python class that can parse MP4 headers, one can use the pymp4 library available on GitHub.

The Box class from this library can be used to build and parse MP4 headers.

The following code shows an example of using the Box class to build an MP4 header and then parse it:

from pymp4.parser import Box from io import BytesIO

header = Box.build(dict( type=b"ftyp", major_brand="iso5", minor_version=1, compatible_brands=["iso5", "avc1"])) print(header)

parsed_header = Box.parse(header) print(parsed_header)

Interesting, when I went back and did the prompt again it worked, I wonder if this is a context problem, because I just asked multiple questions in the same session on different programming topics.

That question wasn't my first question.

For clarity I asked different questions in the top search box assuming that would kick off a new session.

Gotcha. Asking a question in the top box always clears the context and starts a new session.
Hmmm I'm sure the tech is modern but the name... evokes thoughts of throwback to 2000s "ph"at beats, gr"ind"r, and trying to be trendy like appending "ly" to a noun for the company name ( https://thenextweb.com/news/whats-startups-name-trend-misspe... ).

Maybe it's just me, or maybe that what was being aimed for?

We liked the name "Phind" because it was playful and cheeky. And it is a bit of a throwback style-wise.
(comment deleted)
It looks phind queues a query for its machine learning models. I submit the following query twice. For the first time, phind gave Google-like answers that talked about only Guava. For the second time, though, Phind gave me good answers on using popular Go libraries with sample code.

https://phind.com/search?q=How+do+I+use+a+cache+that+is+like...

Both answers were run through the LLM. Answer variability is caused by different web links being returned and the way we sample answers from the LLM. We're working on making it more consistent.
Consistency has to be a tough problem to solve for a service like this, since randomness in the choice of each token is part of the magic sauce that makes LLMs work.
It is definitely a hard problem. There are ways to ensure consistency, such as using beam search decoding, which is deterministic. But that comes with other tradeoffs regarding answer quality.
I prefer less consistency, it allows me to keep probing until I get the style of answer I'm after.
nice, looks great, for few questions I tried it sometimes drifted into unrelated details after responding original question. But at that point I'm already satisfied and maybe giving some additional info isn't bad either. great product, for sure better than digging through all copycats of stack overflow and GitHub in Google results
Yeah, we're trying to strike a balance between being concise and completely answering complex questions. Answers are deliberately long at the moment as we would rather completely answer every question than optimize prematurely by leaving out important details on occasion.

We're thinking about ways to enhance readability by breaking the core of the answer into its own paragraph.

Looks like it's hugged to death. It has good prompt injection attack blocking :)
This is fantastic! Thank you
Does that voting "better than Google" is used for further model learning? if so, is there any protection for manipulation? I could imagine that someone could use that to convince model to promote one product over another
It is used for improvement, but there's a filtering step built in to help prevent abuse.
Excellent results for the first two queries I tried, one about HStack in SwiftUI, another about clamp in GLSL, and a bit of a mixed bag for what I purposely worded as a more error-prone and beginner minded query: “how do i create a second window in openframeworks?”

Absolutely fantastic stuff, I’m excited to add this to my tool-belt. There’s a specific feeling of knowing that an answer to your question is very simple and exists somewhere on SO, but the mental effort of sifting pages of answers seems unappealing. It seems like Phind is well suited to do this job for you!

Thanks for the feedback! I'm happy it worked well for you. We're working on improving consistency -- one thing to try is simply refreshing the page to get a new answer.
> There’s a specific feeling of knowing that an answer to your question is very simple and exists somewhere on SO, but the mental effort of sifting pages of answers seems unappealing. It seems like Phind is well suited to do this job for you!

That simple act reduces your cognitive load, as a programmer you mind is two steps ahead assuming this trivial solution you know conceptually but do not want to spend the mental cycles and looking for the quick code so your mind can jump to the next step in the flow.

Very well done. Did a couple of "How to" questions to generate R scripts for basic purposes (e.g. scraping a webpage) and responses were not only descriptive but also covered other nuances like captcha, javascript execution blocking, parallelizing slow responding sites etc. Have not tried with more nuanced advanced questions but looks very promising so far!
Out of curiosity, what suggestions did you get for captchas and slow sites?
(comment deleted)
when I type in follow up question and them click in autocompleted question it uses it as main question instead of follow up
ah yes that's a bug that will be fixed shortly.
thanks one thing that I could suggest is that on mobile when links are visible, submitting follow up question leaves visible screen with links (response is places below them)
yep, we're working on automatically scrolling you down to the followup as well.
This is really great. What model are you guys using? Do share your process if you're so inclined.

Great work

We're using a combination of our own models and OpenAI models. For our own models, we've found success with Flan-T5 and UL2 which we've further trained on our own data.
(comment deleted)
the latency is really killer for this kind of usecase.. any plans to figure out how to cut it down?
the answer should start generating almost immediately like with ChatGPT. right now our infrastructure is being hugged a bit, and we are scaling it up.
> Warning iconYour browser is out of date! Update your browser to view this website correctly. More Information.

I hate this so much, I have firefox nightly 107, how is everyone flagging me as out of date ... is it a bad library that you are all using?

If you exact-search that message on google, it appears to be generated by Cloudflare's challenge.

I found someone complaining about a similar thing except on WhatsApp Web which also tells them to update Firefox even though they're on FF 107.

Maybe FF changed something used in common feature-detection checks. Perhaps it's fixed in FF 108+.

I'd guess it's just the sad-but-inevitable result of Firefox market share dropping so far. Remember back when every website would tell you your browser was "out of date" unless your user-agent matched IE6's?

For everyone not on Firefox, this is one reason why we kept saying a browser monoculture is bad.

I don't think it's inevitable, there a lot of small vocal groups that achieve their goals ...
My test for any search engine is:

"Best California style burrito in Austin".

Nearly every engine shows me burrito shops in California, some give shove reddit links to the top. Google was the only decent response. Phind response is what I would expect from an assistant who researched this for 5-10 minutes of searching the web. Great work!

(now add maps to those results!)

Location-aware search is one area where it's very tricky to compete with Google. Google Maps/reviews is a phenomenal product. Happy to hear that Phind worked for you here, but we're more focused on the developer/technical search use case for now.
No, for that search what you need to understand is "in <location>" vs "<location> style". Which you could get with supporting n-grams, frankly.
Awesome! I'm curious how you can provide this for free? The biggest challenge for me has been trying to figure out a business model + need that make sense when an API call costs $x > 0.
We have venture funding (YC S22 batch), so we're eating the cost per search while we find product-market fit. However, there will always be a free version of Phind. For monetization, we are thinking about ads, a ChatGPT-style subscription model, or a combination of the two.
Thanks for being forthright. How did you test the MVP before you joined YC and had venture funding? Did you pay from your pockets
Yep, my co-founder and I were both in college pre-YC and we bootstrapped everything.
That is seriously impressive! Good work so far and good luck for the future!

Personally I hope it ends up either freemium or with a reasonable price ideally token based. I very much want to pay to incentivize development of good products but I already subscribe to enough things which is why I hope for more token based services.

(Of course if something is good enough and the pricing is reasonable there are sometimes room for exceptions. Kagi and Telegram are the latest ones for me and only Kagi is "safe", Telegram is mostly as a way to express my gratitude.)

I know this is kind of out in left field, but some people also mentioned query result history. I've been using phind since it was in beta as sayhello and encountered similar a faux pas where submitting feedback sent me to an plaintext error page. Going back and resubmitting the query produced a result that didn't include the important information in the original result. It would be helpful to have search history, but furthermore (and the reason for writing this) is an idea that's been floating around in my head about git-tree esque search histories in bash. Though it's currently outside the range of my expertise. While reading the comments of this thread I had an idea for a similiar feature, something i would probably pay for an recommend.

The feature relates to a problem I've encountered as an active intermediate developer with managing the multidunious and varied queries that i might do both getting up to speed and solving problems in-the-wild. I find that what i learn and use doesn't stick right away, so rather than making the same query (and in this case sometimes getting different results) resorted to keeping 3 notebooks for each subject: a technical reference, a working notebook, and a learning log. That's a lot of notebooks!

I mention this because knowledge management and effective learning go hand in hand. And learning something you didn't know seems to be the problem domain of ai search for developers.

Organizing query results thematically by learning trees would be a gargantuan undertaking, and probably far outside the scope of what is already an excellent service. Just putting that out there.

Thanks!