Spaces:
Sleeping
Sleeping
| :setvar DemoDatabase "CustomerAIDemo" | |
| :setvar EmbeddingModelName "LocalEmbeddingModel" | |
| USE [$(DemoDatabase)]; | |
| GO | |
| CREATE OR ALTER PROCEDURE dbo.usp_LegacyKeywordSearch | |
| @Keyword NVARCHAR(100) | |
| AS | |
| BEGIN | |
| SET NOCOUNT ON; | |
| SELECT TOP (20) | |
| FeedbackId, | |
| Product, | |
| CustomerSegment, | |
| RiskLevel, | |
| Channel, | |
| CreatedAt, | |
| FeedbackText | |
| FROM dbo.CustomerFeedback | |
| WHERE FeedbackText LIKE N'%' + @Keyword + N'%' | |
| ORDER BY CreatedAt DESC; | |
| END | |
| GO | |
| CREATE OR ALTER PROCEDURE dbo.usp_SemanticRiskSearch | |
| @Question NVARCHAR(MAX), | |
| @CustomerSegment NVARCHAR(50) = NULL, | |
| @RiskLevel NVARCHAR(20) = NULL, | |
| @DaysBack INT = 30 | |
| AS | |
| BEGIN | |
| SET NOCOUNT ON; | |
| DECLARE @query VECTOR(1024) = | |
| AI_GENERATE_EMBEDDINGS(@Question USE MODEL $(EmbeddingModelName)); | |
| SELECT TOP (20) WITH APPROXIMATE | |
| f.FeedbackId, | |
| f.Product, | |
| f.CustomerSegment, | |
| f.RiskLevel, | |
| f.Channel, | |
| f.CreatedAt, | |
| f.FeedbackText, | |
| r.distance | |
| FROM VECTOR_SEARCH( | |
| TABLE = dbo.CustomerFeedback AS f, | |
| COLUMN = Embedding, | |
| SIMILAR_TO = @query, | |
| METRIC = 'cosine' | |
| ) AS r | |
| WHERE (@CustomerSegment IS NULL OR f.CustomerSegment = @CustomerSegment) | |
| AND (@RiskLevel IS NULL OR f.RiskLevel = @RiskLevel) | |
| AND (@DaysBack IS NULL OR f.CreatedAt >= DATEADD(DAY, -@DaysBack, SYSUTCDATETIME())) | |
| ORDER BY r.distance; | |
| END | |
| GO | |
| CREATE OR ALTER PROCEDURE dbo.usp_FindSimilarCases | |
| @FeedbackId INT | |
| AS | |
| BEGIN | |
| SET NOCOUNT ON; | |
| DECLARE @caseVector VECTOR(1024); | |
| SELECT @caseVector = Embedding | |
| FROM dbo.CustomerFeedback | |
| WHERE FeedbackId = @FeedbackId; | |
| IF @caseVector IS NULL | |
| BEGIN | |
| THROW 51001, 'FeedbackId not found or embedding is null.', 1; | |
| END | |
| SELECT TOP (25) WITH APPROXIMATE | |
| f.FeedbackId, | |
| f.Product, | |
| f.CustomerSegment, | |
| f.RiskLevel, | |
| f.CreatedAt, | |
| f.FeedbackText, | |
| r.distance | |
| FROM VECTOR_SEARCH( | |
| TABLE = dbo.CustomerFeedback AS f, | |
| COLUMN = Embedding, | |
| SIMILAR_TO = @caseVector, | |
| METRIC = 'cosine' | |
| ) AS r | |
| WHERE f.FeedbackId <> @FeedbackId | |
| ORDER BY r.distance; | |
| END | |
| GO | |