Question Answering Using A Search API
Question answering using a search API and re-ranking
Searching for relevant information can sometimes feel like looking for a needle in a haystack, but don’t despair, GPTs can actually do a lot of this work for us. In this guide we explore a way to augment existing search systems with various AI techniques, helping us sift through the noise.
Two ways of retrieving information for GPT are:
- Mimicking Human Browsing: GPT triggers a search, evaluates the results, and modifies the search query if necessary. It can also follow up on specific search results to form a chain of thought, much like a human user would do.
- Retrieval with Embeddings: Calculate embeddings for your content and a user query, and then retrieve the content most related as measured by cosine similarity. This technique is used heavily by search engines like Google.
These approaches are both promising, but each has their shortcomings: the first one can be slow due to its iterative nature and the second one requires embedding your entire knowledge base in advance, continuously embedding new content and maintaining a vector database.
By combining these approaches, and drawing inspiration from re-ranking methods, we identify an approach that sits in the middle. This approach can be implemented on top of any existing search system, like the Slack search API, or an internal ElasticSearch instance with private data. Here’s how it works:

Step 1: Search
- User asks a question.
- GPT generates a list of potential queries.
- Search queries are executed in parallel.
Step 2: Re-rank
- Embeddings for each result are used to calculate semantic similarity to a generated hypothetical ideal answer to the user question.
- Results are ranked and filtered based on this similarity metric.
Step 3: Answer
- Given the top search results, the model generates an answer to the user’s question, including references and links.
This hybrid approach offers relatively low latency and can be integrated into any existing search endpoint, without requiring the upkeep of a vector database. Let's dive into it! We will use the News API as an example domain to search over.
Setup
In addition to your OPENAI_API_KEY, you'll have to include a NEWS_API_KEY in your environment. You can get an API key here.
1. Search
It all starts with a user question.
Now, in order to be as exhaustive as possible, we use the model to generate a list of diverse queries based on this question.
['NBA championship winner', , 'MVP of NBA championship', , 'Last game of NBA championship', , 'NBA finals winner', , 'Most valuable player of NBA championship', , 'Finals game of NBA', , 'Who won the NBA finals', , 'NBA championship game summary', , 'NBA finals MVP', , 'Champion of NBA playoffs', , 'NBA finals last game highlights', , 'NBA championship series result', , 'NBA finals game score', , 'NBA finals game recap', , 'NBA champion team and player', , 'NBA finals statistics', , 'NBA championship final score', , 'NBA finals best player', , 'NBA playoffs champion and MVP', , 'NBA finals game analysis', , 'Who won the NBA championship? And who was the MVP? Tell me a bit about the last game.']
The queries look good, so let's run the searches.
0%| | 0/21 [00:00<?, ?it/s]
Total number of articles: 554 Top 5 articles of query 1: Title: Nascar takes on Le Mans as LeBron James gets centenary race under way Description: <ul><li>Nascar has presence at iconic race for first time since 1976</li><li>NBA superstar LeBron James waves flag as honorary starter</li></ul>The crowd chanted “U-S-A! U-S-A!” as Nascar driver lineup for the 24 Hours of Le Mans passed through the city cente… Content: The crowd chanted U-S-A! U-S-A! as Nascar driver lineup for the 24 Hours of Le Mans passed through t... Title: NBA finals predictions: Nuggets or Heat? Our writers share their picks Description: Denver or Miami? Our contributors pick the winner, key players and dark horses before the NBA’s grand finale tips offA lot has been made of the importance of a balanced roster with continuity, but, somehow, still not enough. The Nuggets are the prime example … Content: The Nuggets are here because A lot has been made of the importance of a balanced roster with conti... Title: Unboxing: Michelob ULTRA and Artist Futura Enshrine the NBA Championship In Custom Hand-Painted Bottles Description: As the 2022-2023 NBA Championship nears the end, Michelob ULTRA brings joy to sports fans who will gather to watch the showdown between the Denver Nuggets and Miami Heat. The beermaker teamed up with artist Futura to remix its newly-designed 2023 Champ Bottle… Content: As the 2022-2023 NBA Championship nears the end, Michelob ULTRA brings joy to sports fans who will g... Title: Futura and Michelob ULTRA Toast to the NBA Finals With Abstract Artwork Crafted From the Brand’s 2023 Limited-Edition Championship Bottles Description: The sun is out to play, and so is Michelob ULTRA. With the 2022-2023 NBA Finals underway, the beermaker is back with its celebratory NBA Champ Bottles. This year, the self-proclaimed MVP of joy is dropping a limited-edition bottle made in collaboration with a… Content: The sun is out to play, and so is Michelob ULTRA. With the 2022-2023 NBA Finals underway, the beerma... Title: Signed and Delivered, Futura and Michelob ULTRA Will Gift Hand-Painted Bottles to This Year’s NBA Championship Team Description: Michelob ULTRA, the MVP of joy and official beer sponsor of the NBA is back to celebrate with basketball lovers and sports fans around the globe as the NBA 2022-2023 season comes to a nail-biting close. In collaboration with artist Futura, Michelob ULTRA will… Content: Michelob ULTRA, the MVP of joy and official beer sponsor of the NBA is back to celebrate with basket...
As we can see, oftentimes, the search queries will return a large number of results, many of which are not relevant to the original question asked by the user. In order to improve the quality of the final answer, we use embeddings to re-rank and filter the results.
2. Re-rank
Drawing inspiration from HyDE (Gao et al.), we first generate a hypothetical ideal answer to rerank our compare our results against. This helps prioritize results that look like good answers, rather than those similar to our question. Here’s the prompt we use to generate our hypothetical answer.
'The NBA championship was won by TEAM NAME. The MVP was awarded to PLAYER NAME. The last game was held at STADIUM NAME, where both teams played with great energy and enthusiasm. It was a close game, but in the end, TEAM NAME emerged victorious.'
Now, let's generate embeddings for the search results and the hypothetical answer. We then calculate the cosine distance between these embeddings, giving us a semantic similarity metric. Note that we can simply calculate the dot product in lieu of doing a full cosine similarity calculation since the OpenAI embeddings are returned normalized in our API.
[0.7854456526852069, , 0.8086023500072106, , 0.8002998147018501, , 0.7961229569526956, , 0.798354506673743, , 0.758216458795653, , 0.7753754083127359, , 0.7494958338411927, , 0.804733946801739, , 0.8405965885235218]
Finally, we use these similarity scores to sort and filter the results.
Top 5 articles: Title: NBA Finals: Denver Nuggets beat Miami Hea, lift thier first-ever NBA title Description: Denver Nuggets won their maiden NBA Championship trophy defeating Miami Heat 94-89 in Game 5 of the NBA Final held on Tuesday at the Ball Arena in Denver Content: Denver Nuggets won their maiden NBA Championship trophy defeating Miami Heat 94-89 in Game 5 of the ... Score: 0.8445817523602124 Title: Photos: Denver Nuggets celebrate their first NBA title Description: The Nuggets capped off an impressive postseason by beating the Miami Heat in the NBA Finals. Content: Thousands of supporters watched along the streets of Denver, Colorado as the US National Basketball ... Score: 0.842070667753606 Title: Denver Nuggets win first NBA championship title in Game 5 victory over Miami Heat Description: The Denver Nuggets won their first NBA championship Monday night, downing the Miami Heat 94-89 at Ball Arena in Denver to take Game 5 of the NBA Finals. Content: The Denver Nuggets won their first NBA championship Monday night, downing the Miami Heat 94-89 at Ba... Score: 0.8409346078172385 Title: Denver Nuggets Capture Their First NBA Championship Behind Unbreakable Chemistry Description: After 47 years of waiting, the Denver Nuggets are NBA champions. Led by Nikola Jokic and Jamal Murray, they reached the mountain top by staying true to themselves. Content: DENVER, CO - JUNE 12: Jamal Murray (27) of the Denver Nuggets celebrates as he leaves the court ... ... Score: 0.8405965885235218 Title: NBA Finals: Nikola Jokic, Denver Nuggets survive Miami Heat to secure franchise's first NBA championship Description: In a rock-fight of a Game 5, the Denver Nuggets reached the NBA mountaintop from the foothills of the Rockies, winning their first-ever championship and setting Nikola Jokic's legacy as an all-timer in stone. Content: DENVER, COLORADO - JUNE 12: Jamal Murray #27 of the Denver Nuggets reacts during the fourth quarter ... Score: 0.8389716330890262
Awesome! These results look a lot more relevant to our original query. Now, let's use the top 5 results to generate a final answer.