What Is This Thing? is a demo application showcasing vector search and hybrid search using Couchbase. It is an ASP.NET Core demo eCommerce website with features like semantic visual search and geo-location-based product recommendations.
- WhatIsThisThing.Server: The main ASP.NET Core application backend with API endpoints like Identify and Browse.
- WhatIsThisThing.Loader: Populates Couchbase with sample data, including vector embeddings from Azure Computer Vision.
- WhatIsThisThing.Core: Contains common services and shared configuration.
- whatisthisthing.client: The React frontend for the application.
The shared backend configuration is stored in appsettings.json
or appsettings.Development.json
within the WhatIsThisThing.Core
project:
{
"Couchbase": {
"ConnectionString": "couchbase://localhost",
"Username": "Administrator",
"Password": "password",
"BucketName": "whatisthis",
"ScopeName": "_default"
},
"AzureComputerVision": {
"Endpoint": "https://<subdomain>.cognitiveservices.azure.com/computervision/",
"SubscriptionKey": "<key>"
}
}
There is an appsettings.Development.json.sample
file included. You can use this as a starter example when creating your own appsettings.Development.json
file.
-
Clone the repository
git clone https://github.com/mgroves/WhatIsThisThing.git cd WhatIsThisThing
-
Set up Couchbase
- Install and start Couchbase Server.
- Create a bucket named
whatisthis
.
-
Create the vector search index
- Access the Couchbase web console.
- Navigate to the "Indexes" tab.
- Create a new vector search index on the
whatisthis
bucket.
-
Configure Azure Computer Vision
- Obtain your endpoint and subscription key from the Azure portal.
- Update
appsettings.json
in theWhatIsThisThing.Core
project with your Azure Computer Vision credentials. - Confirm that you have the correct permission to use this endpoint.
-
Load sample data into Couchbase
cd WhatIsThisThing.Loader dotnet run
-
Build and run the backend (and frontend will also launch via Vite)
cd WhatIsThisThing.Server dotnet run --launch-profile https
-
Access the application
- Navigate to
https://localhost:5173/
to use the frontend. - Use
https://localhost:7145
for the backend API.
- Navigate to
- Upload a picture to identify the item (and other similar-looking items).
- Get item details including price, description, and nearby stores that have the item in stock.
- View the entire catalog.
- Filter items based on review scores/prices.
This demo project is licensed under the MIT License.