Skip to content

Commit

Permalink
Edits and Additions to 2nd Blog Post (#588)
Browse files Browse the repository at this point in the history
* add second blog post

Signed-off-by: Palaniappan R <palaniappan.r.mail@gmail.com>

* edit second blog post

Signed-off-by: Palaniappan R <palaniappan.r.mail@gmail.com>

---------

Signed-off-by: Palaniappan R <palaniappan.r.mail@gmail.com>
Co-authored-by: Palaniappan R <palaniappan.r.mail@gmail.com>
  • Loading branch information
carlosmalt and palaniappan-r authored Jul 30, 2024
1 parent f6225be commit 418ee5f
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ focal_point: ""
preview_only: false
---

Hi again! I'm [Palaniappan R](https://ucsc-ospo.github.io/author/palaniappan-r/), a GSoC contributor working on the OpenROAD chat assistant project under the mentorship of [Indira Iyer](https://ucsc-ospo.github.io/author/indira-iyer/) and [Jack Luar](https://ucsc-ospo.github.io/author/jack-luar/). My project aims to build an LLM-powered chat assistant designed to provide seamless access to existing online resources, thereby reducing support overhead. Over the past month, I've been collaborating with [Aviral Kaintura](https://ucsc-ospo.github.io/author/aviral-kaintura/), as our GSoC projects share a common goal.
Hi again! I'm [Palaniappan R](https://ucsc-ospo.github.io/author/palaniappan-r/), a GSoC contributor working on the OpenROAD chat assistant project under the mentorship of [Indira Iyer](https://ucsc-ospo.github.io/author/indira-iyer/) and [Jack Luar](https://ucsc-ospo.github.io/author/jack-luar/). My project aims to build an LLM-powered chat assistant designed to provide seamless access to existing online resources, thereby reducing support overhead. Over the past month, I've been collaborating with [Aviral Kaintura](https://ucsc-ospo.github.io/author/aviral-kaintura/), on data engineering to deliver on our common project goal of an OpenROAD assistant and an open-EDA dataset that promotes further research and collaboration.

### Progress
The retrieval architecture is at the heart of any retrieval-augmented generation (RAG) setup. Our current setup employs a hybrid-search technique, combining a traditional keyword search method with more advanced vector search methods. As illustrated in the diagram, we combine a simple semantic search, a Maximal Marginal Relevance (MMR) search and a text-based BM25 ranking technique to build our hybrid retriever.
Expand All @@ -47,13 +47,13 @@ flowchart LR

Upon receiving a query, relevant documents are sourced from each retriever, resulting in a broad set of results. We feed these results into a cross-encoder re-ranker model to get the `top-n` documents with maximum relevance.

After building the retriever, we utilized the LangGraph framework to develop a stateful, multi-agent workflow tailored to our use case. This allows flexibility in servicing a diverse set of user questions in an efficient and accurate manner, given the sparse nature of our dataset.

After building the retriever, we utilized the LangGraph framework to develop a stateful, multi-agent workflow tailored to our use case.
Our current dataset can be broadly classified into the following categories:
- OpenROAD Documentation
- OpenROAD-flow-scripts Documentation
- OpenSTA Documentation
- OpenROAD manpages
- OpenROAD Manpages

These data sources are embedded into separate FAISS vector databases using open-source embeddings models (we've been working on fine-tuning an embeddings model for better retrieval accuracy). The hybrid search retrievers are then applied to these vector databases, creating internal tools that can be queried by our LLM as needed. Each tool has access to different data sources in various domains. For instance, the `retrieve_cmds` tool selectively has access to information detailing the multiple commands in the OpenROAD framework, while the `retrieve_install` deals with installation-related documentation. As depicted in the flowchart, a routing LLM call classifies the input query and forwards it to the appropriate retriever tool. Relevant documents are then sent back to the LLM for response generation.

Expand All @@ -70,9 +70,10 @@ graph TD
retrieve_opensta --> generate
generate --> __end__
```
Feel free to try out our chat assistant [here](https://orassistant.netlify.app/). Instructions to set up and run our chatbot can be found [here](https://github.com/The-OpenROAD-Project/ORAssistant).


Please find instructions to set up and use our chatbot [here](https://github.com/The-OpenROAD-Project/ORAssistant).
Here's an example of our chatbot in action.
![Example](img1.png)

### Future Plans

Expand Down

0 comments on commit 418ee5f

Please sign in to comment.