Hi @satellitef and welcome to the community!
The performance of a RAG system tends to be highly dependent on the “retriever” component. It’s quite an elaborate topic but you can have a look at some of the “considerations” mentioned here.
With the retrieval part, you may have purely structured data (like looking up product IDs), but often you will probably have purely unstructured data (product descriptions), and embedding those and performing vector search, and then doing some additional re-ranking using structured data and other “signals” is usually how you improve the performance.