58 lines
1.9 KiB
Ruby
58 lines
1.9 KiB
Ruby
# scripts/debug_faq_search.rb
|
|
|
|
puts '--- DEBUGGING FAQ SEARCH ---'
|
|
|
|
question_query = 'Qual a senha do wifi?'
|
|
|
|
# 1. Check if the specific FAQ exists
|
|
faq = Captain::AssistantResponse.where('question ILIKE ?', '%wifi%').last
|
|
|
|
if faq
|
|
puts "\n[1] FAQ Record Found:"
|
|
puts " ID: #{faq.id}"
|
|
puts " Question: #{faq.question}"
|
|
puts " Answer: #{faq.answer}"
|
|
puts " Embedding present?: #{faq.embedding.present?}"
|
|
puts " Embedding size: #{faq.embedding&.size}"
|
|
else
|
|
puts "\n[!] FAQ NOT FOUND in database matching 'wifi'."
|
|
end
|
|
|
|
# 2. Perform a search using the Service
|
|
puts "\n[2] Testing SearchService with query: '#{question_query}'"
|
|
|
|
begin
|
|
# Mocking the assistant context if needed, or using the first assistant
|
|
assistant = Captain::Assistant.first
|
|
puts " Using Assistant ID: #{assistant.id} (#{assistant.name})"
|
|
|
|
# Ensure we are searching within the correct scope (assistant.responses.approved)
|
|
# Mimicking SearchDocumentationService logic
|
|
|
|
account_id = assistant.account_id
|
|
|
|
# Manual vector search calculation to see raw distances
|
|
embedding_service = Captain::Llm::EmbeddingService.new(account_id: account_id)
|
|
query_embedding = embedding_service.get_embedding(question_query)
|
|
|
|
results = assistant.responses.approved.nearest_neighbors(:embedding, query_embedding, distance: 'cosine').limit(5)
|
|
|
|
puts "\n Raw Vector Search Results:"
|
|
if results.empty?
|
|
puts ' No results found.'
|
|
else
|
|
results.each do |res|
|
|
dist = res.neighbor_distance
|
|
puts " - ID: #{res.id}"
|
|
puts " Q: #{res.question}"
|
|
puts " Distance: #{dist}"
|
|
puts " Low confidence? (> #{Captain::Tools::SearchDocumentationService::LOW_CONFIDENCE_DISTANCE}): #{dist.to_f > Captain::Tools::SearchDocumentationService::LOW_CONFIDENCE_DISTANCE}"
|
|
end
|
|
end
|
|
|
|
rescue StandardError => e
|
|
puts " Error during search test: #{e.message}"
|
|
end
|
|
|
|
puts "\n--- END DEBUG ---"
|