Spaces:
Sleeping
Sleeping
| :setvar DemoDatabase "CustomerAIDemo" | |
| :setvar EmbeddingModelName "LocalEmbeddingModel" | |
| USE [$(DemoDatabase)]; | |
| GO | |
| PRINT 'A1. Latest customer feedback rows'; | |
| SELECT TOP (10) | |
| FeedbackId, | |
| Product, | |
| CustomerSegment, | |
| RiskLevel, | |
| FeedbackText, | |
| CreatedAt | |
| FROM dbo.CustomerFeedback | |
| ORDER BY CreatedAt DESC; | |
| GO | |
| PRINT 'A2. Legacy keyword search: this misses "ghi no", "so du giam", "tien bi giu"'; | |
| SELECT TOP (10) | |
| FeedbackId, | |
| Product, | |
| RiskLevel, | |
| FeedbackText | |
| FROM dbo.CustomerFeedback | |
| WHERE FeedbackText LIKE N'%trừ tiền%' | |
| OR FeedbackText LIKE N'%hoàn tiền%' | |
| OR FeedbackText LIKE N'%giao dịch lỗi%' | |
| ORDER BY CreatedAt DESC; | |
| GO | |
| PRINT 'B. Semantic search: same intent, different wording'; | |
| DECLARE @query VECTOR(1024) = | |
| AI_GENERATE_EMBEDDINGS( | |
| N'app báo giao dịch thất bại nhưng tài khoản vẫn bị trừ tiền' | |
| USE MODEL $(EmbeddingModelName) | |
| ); | |
| SELECT TOP (10) WITH APPROXIMATE | |
| f.FeedbackId, | |
| f.Product, | |
| f.CustomerSegment, | |
| f.RiskLevel, | |
| f.FeedbackText, | |
| r.distance | |
| FROM VECTOR_SEARCH( | |
| TABLE = dbo.CustomerFeedback AS f, | |
| COLUMN = Embedding, | |
| SIMILAR_TO = @query, | |
| METRIC = 'cosine' | |
| ) AS r | |
| ORDER BY r.distance; | |
| GO | |
| PRINT 'C. Semantic search plus business filters: VIP + High/Critical + last 7 days'; | |
| DECLARE @query VECTOR(1024) = | |
| AI_GENERATE_EMBEDDINGS( | |
| N'khách hàng VIP gặp lỗi thanh toán nghiêm trọng' | |
| 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 f.CustomerSegment = N'VIP' | |
| AND f.RiskLevel IN (N'High', N'Critical') | |
| AND f.CreatedAt >= DATEADD(DAY, -7, SYSUTCDATETIME()) | |
| ORDER BY r.distance; | |
| GO | |
| PRINT 'D. From one serious case, find similar cases'; | |
| DECLARE @caseId INT = | |
| ( | |
| SELECT TOP (1) FeedbackId | |
| FROM dbo.CustomerFeedback | |
| WHERE SourceIssueGroup = N'Failed transaction but debited' | |
| AND RiskLevel = N'Critical' | |
| AND Embedding IS NOT NULL | |
| ORDER BY FeedbackId | |
| ); | |
| DECLARE @caseVector VECTOR(1024); | |
| SELECT @caseVector = Embedding | |
| FROM dbo.CustomerFeedback | |
| WHERE FeedbackId = @caseId; | |
| SELECT | |
| @caseId AS seed_feedback_id, | |
| FeedbackText AS seed_feedback_text | |
| FROM dbo.CustomerFeedback | |
| WHERE FeedbackId = @caseId; | |
| 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 <> @caseId | |
| ORDER BY r.distance; | |
| GO | |
| PRINT 'E. Risk triage summary from top semantic hits'; | |
| DECLARE @query VECTOR(1024) = | |
| AI_GENERATE_EMBEDDINGS( | |
| N'giao dịch thanh toán bị lỗi nhưng tiền của khách hàng bị giữ hoặc bị ghi nợ' | |
| USE MODEL $(EmbeddingModelName) | |
| ); | |
| SELECT | |
| Product, | |
| RiskLevel, | |
| COUNT(*) AS hit_count, | |
| MIN(distance) AS closest_distance, | |
| AVG(distance) AS avg_distance | |
| FROM | |
| ( | |
| SELECT TOP (100) WITH APPROXIMATE | |
| f.FeedbackId, | |
| f.Product, | |
| f.RiskLevel, | |
| r.distance | |
| FROM VECTOR_SEARCH( | |
| TABLE = dbo.CustomerFeedback AS f, | |
| COLUMN = Embedding, | |
| SIMILAR_TO = @query, | |
| METRIC = 'cosine' | |
| ) AS r | |
| ORDER BY r.distance | |
| ) AS hits | |
| GROUP BY Product, RiskLevel | |
| ORDER BY closest_distance; | |
| GO | |
| PRINT 'F. Security check: embedding model registered inside SQL Server'; | |
| SELECT | |
| name, | |
| location, | |
| api_format, | |
| model_type, | |
| model | |
| FROM sys.external_models; | |
| GO | |