89 lines
2.5 KiB
Markdown

# 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": "<azure_aisearch_key>",
"index_name": "iva-vector-demo"
},
"azure_openai_api": {
"key": "<azure_openai_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);
});
```