
Meow Muse is proof of concept application that allows users to chat with an AI Assistant about their cat's health. The AI uses RAG and only returns an answer if relevant data exists in the vector database.
NOTE: If the Meow Muse UX/UI looks similar to the ApplyWize Redwood SDK Tutorial App - that's because it is 😺.
- Meow Muse is built with the Redwood SDK. See the section below and their docs for more information.
- This application uses Cloudflare AI for chat, specifically Llama 4 Scout.
- Because the vector database (Qdrant) was originally created with OpenAI Embeddings, the AI Agent uses the same.
NOTE: The code for RAG data ingestion is not in this repository. I recommend the sources below if you want to re-create this application.
The data in Qdrant comes from the following sources:
- Cornell University College of Veterinary Medicine
- Pet MD
- Merck Manual
- BSAVA Manual of Feline Veterinary Practice
- AAFP
- Clean up ingested data (remove any unnecessary HTML tags, etc.)
- Add more indexes/filters to Qdrant
- Move from Qdrant to Cloudflare Vectorize
- Use Cloudflare AutoRAG
- Figure out the best way to handle tool calling - does not currently work (see comments in code).
- Use BetterAuth for AuthN/AuthZ
- General user interface cleanup
- Known issue: Hot reload on the Chat page can sometimes lead to infinite refreshes.
- To see images on localhost, I suggest you upload one to the bucket and then change the
src
ref in theimg
tag in theChatBox
component. Right now it is set to:https://pub-a61e40a1c173478f9ec99627cd03a855.r2.dev/siamese.jpeg
This "standard starter" is the recommended implementation for RedwoodSDK. You get a Typescript project with:
- Vite
- database (Prisma via D1)
- Session Management (via DurableObjects)
- Passkey authentication (Webauthn)
- Storage (via R2)
npx degit redwoodjs/sdk/starters/standard my-project-name
cd my-project-name
pnpm install
pnpm dev
Point your browser to the URL displayed in the terminal (e.g. http://localhost:5173/
). You should see a "Hello World" message in your browser.
Within your project's wrangler.jsonc
:
-
Replace the
__change_me__
placeholders with a name for your application -
Create a new D1 database:
npx wrangler d1 create my-project-db
Copy the database ID provided and paste it into your project's wrangler.jsonc
file:
For authentication setup and configuration, including optional bot protection, see the Authentication Documentation.