# CQA Retriever This package provides an example RAG process using Azure AI Search for Retrieval and the Verint DaVinci Contextual Question Answer (CQA) Service. ## What's New: Updated [24/05/2025] - Initial Release ## Setup Instructions ### Prerequisites - This package requires the CQA Widget to be installed and configured. > **WARNING:** There is an error in the _CQA_66308ec473f3d10350a2e499_ Global Variable file on line 20: It should read v2 instead of v1 and should be fixed manually ```javascript let url = `${settings.apiurl}/${settings.productcode}/${settings.ingress}/inference/verint-contextual-question-answering-v2`; ``` ### Installation 1. Copy the [CQA_Retriever](./GlobalVariable/CQA_Retriever.js) and [CQA_RetieverSettings](./GlobalVariable/CQA_RetrieverSettings.json) files into **Global Variables** 2. _Optional:_ Import the Example Conversation Flow and Intent ### Configuration #### CQA_RetieverSettings Fill out the settings below. ```json { "azure_aisearch": { "endpoint": "https://iva-demo-vector-service.search.windows.net", "key": "", "index_name": "iva-vector-demo" }, "azure_openai_api": { "key": "", "instance_name": "iva-open-ai", "deployment_name": "text-embedding-3-small", "embeddings_deployment_name": null, "version": "2024-08-01-preview" }, "filterExpression": "search.in(company, 'Verint')", "debug": true } ``` ## Package Content Details ### CQA_RetieverSettings A global variable JSON object with environment-specific settings. See above for details. ### CQA_Retriever A global variable function which handles the logic and API calls used to retrieve documents for Context. ### Example code block that should be using in your Conversation Flows This is included in the Example Conversation Flow if you have imported that. > NOTE: This example exits via the output pin '0'. If you need it to continue to the next block, then change the ```next(0)``` to ```next()``` on the second to last line, ```javascript (async () => { console.log(`CQA Retrieval: ${conversationData.cqa_question}`); conversationData.cqa_source = await CQA_Retriever().retrieve( conversationData.cqa_question ); })() .catch((error) => { console.log(error.message); recognizedObject.answers.push(error.message); recognizedObject.errorInfo = { ...recognizedObject.errorInfo, label: { data: error.toJSON ? error.toJSON() : {}, message: error.message, }, }; }) .finally(() => { next(0); }); ```