Here is the live system: Voxgig Podcasts.
This is an open source example of a Retrieval Augmented Generation (RAG) system that includes:
- A document (audio transcript) ingestion pipeline;
- Simple vector embeddig using AWS LLMs and OpenSearch;
- An embeddable chat widget that can run on third party websites;
- A scalable Node.js Serverless Microservices architecture in TypeScript;
- An exmaple of the local-monolith development style;
- An example of a type-safe model-driven system;
This code is derived from code written by Mikael Vesavuori: bedrock-rag-demo (Thanks Mikael!)
This open source code is sponsored and supported by Voxgig. |
---|
Locally the system runs as a single Node.js process (a "local monolith").
You will need a Deepgram account to perform audio transcriptions. Register for a free developer account.
You will also need an AWS account to access the Bedrock LLM.
Clone this repo, and run npm install
in these folders:
backend
widget/ask
Add you Deepgram API Key to the srv/env/local/local-env.ts
file and
recompile with npm run build
Set your $AWS_PROFILE
environment variable so that the AWS SDK can
access the Bedrock LLM.
In backend
run:
$ npm run local
Verify the backend by opening another terminal in the backend
folder
and running the system REPL:
$ npm run repl
Using the REPL, ingest a podcast:
> aim:ingest,subscribe:podcast,feed:'https://feeds.resonaterecordings.com/voxgig-fireside-podcast'
This is a Seneca microservices system.
To chat to the system, run the chat widget in development mode:
In the widget/ask
folder:
$ npm run dev
And open a browser as directed.
This system uses the Serverless framework for deployment to AWS.
The following AWS services are used:
- Lambda
- DynamoDB
- OpenSearch
- S3
- Cloudwatch
- SQS
- API Gateway
- Cloudfront
Basic AWS and Serverless knowledge is assumed.