Azure-Search-OpenAI-Demo Project Introduction
The Azure-Search-OpenAI-Demo project is a unique solution designed to create a ChatGPT-like experience utilizing your own data. By leveraging the power of Azure OpenAI and Azure AI Search, this project brings advanced AI capabilities to personal or organizational data processing.
Overview
This solution is primarily developed in Python, although versions for JavaScript, .NET, and Java are available. It showcases several methods for building interactive AI experiences akin to ChatGPT by using the Retrieval Augmented Generation (RAG) pattern. Specifically, it integrates Azure OpenAI Service to access a GPT model (gpt-35-turbo) and Azure AI Search for efficient data indexing and retrieval.
Focusing on a fictional enterprise called Contoso Electronics, this project allows users to interactively ask questions about company policies, benefits, and other job-related information.
Features
The project provides several innovative features:
- Chat and Q&A Interfaces: Supports both multi-turn conversational interactions and single-turn question-and-answer exchanges.
- Citation and Thought Process Rendering: Displays references and logical reasoning for each response.
- Customizable Settings: Users can modify the behavior and explore different options via the user interface.
- Integrated AI Search: Facilitates document indexing and retrieval across various document formats, with optional vectorization features.
- Optional Enhancements: Includes features like GPT-4 vision, speech input/output, and automated login and data access through Microsoft Entra.
- Performance and Monitoring Tools: Monitors application performance using Application Insights.
System Architecture
The architecture diagram of the application illustrates how the system leverages Azure services to handle data retrieval, processing, and user interaction in a seamless manner.
Requirements and Cost Estimation
To deploy and utilize this application, certain requirements must be met:
- Azure Account: Newcomers can start with a free Azure account.
- Azure OpenAI Subscription: Access must be enabled specifically for Azure OpenAI services, or alternatively, the OpenAI public API can be used.
- Appropriate Permissions: Necessary Azure account permissions are required to deploy the resources.
The costs associated with using this application depend on the region and usage, encompassing resources like Azure Container Apps, Azure OpenAI, and others. Users can estimate costs using the Azure pricing calculator and explore options to deploy with minimal costs.
Getting Started
There are several ways to set up the project:
- GitHub Codespaces: Offers a ready-to-use virtual environment without installing tools locally.
- VS Code Dev Containers: Enables working on the project through a local installation of VS Code, with the help of Docker.
- Local Environment: Requires installing necessary tools like Azure Developer CLI, Python, Node.js, and others on a local machine.
Deployment
Deploying the application involves provisioning Azure resources and deploying the code to Azure Container Apps:
- Authenticate using your Azure account.
- Create a new environment for the project.
- Customize deployment options if needed.
- Use the
azd up
command to deploy, with immediate resources activated in Azure.
Running and Using the App
Once deployed, the application can run locally or on Azure. The URL provided after deployment can be accessed to interact with the application:
- Explore Chat Topics: Users can engage with various topics and inquire about citations and sources.
- Experiment with Settings: Tweak the interface settings to improve or change the interaction style and data processing.
Cleanup and Maintenance
Upon completion or when the application is no longer needed, the resources can be deleted using the azd down
command to avoid unnecessary costs.
Further Customizations and Monitoring
Post-deployment, users can customize the interface and replace datasets to better suit organizational needs. Application performance and issues can be tracked using Application Insights.
Resources and Support
For more comprehensive documentation or assistance, users can explore additional resources and seek help via GitHub Issues or other prescribed support channels.
This project provides a comprehensive framework for integrating AI-driven conversation capabilities with specific datasets, offering a versatile tool for organizations aiming to leverage AI technology effectively.