Jrine's picture
second base
1257299
import { NextResponse } from 'next/server'
import { generateEmbedding } from '@/lib/huggingface'
import { createServerSupabaseClient } from '@/lib/supabase-server'
import type { VectorSearchRequest, VectorSearchResult } from '@/types'
export async function POST(request: Request) {
try {
const body: VectorSearchRequest = await request.json()
const {
query,
match_threshold = 0.5,
match_count = 5
} = body
if (!query) {
return NextResponse.json(
{ error: 'Query is required' },
{ status: 400 }
)
}
console.log('Generating embedding for query:', query)
const queryEmbedding = await generateEmbedding(query)
console.log('Embedding generated, length:', queryEmbedding.length)
const supabase = await createServerSupabaseClient()
console.log('Calling match_documents RPC...')
const { data, error } = await supabase.rpc('match_documents', {
query_embedding: queryEmbedding,
match_threshold,
match_count,
})
if (error) {
console.error('Search error:', error)
throw error
}
console.log('Search results:', data)
return NextResponse.json({
results: data as VectorSearchResult[]
}, { status: 200 })
} catch (error: unknown) {
console.error("Search API Error:", error);
const message =
error instanceof Error ? error.message : "Internal server error";
return NextResponse.json(
{ error: message },
{ status: 500 }
);
}
}