Show related packages based on description embeddings
Package pages get a "Related packages" section: a nearest neighbor query against the package's own stored embedding (no external service call), excluding the package itself. Packages without an embedding render no section.
This commit is contained in:
parent
fdf3289f54
commit
4d07f43a2e
5 changed files with 46 additions and 0 deletions
|
|
@ -73,6 +73,21 @@ class PackagesControllerTest < ActionController::TestCase
|
|||
end
|
||||
end
|
||||
|
||||
test 'details shows semantically related packages' do
|
||||
packages(:vim).update_column(:embedding, Array.new(384, 0.25))
|
||||
packages(:firefox).update_column(:embedding, Array.new(384, 0.75))
|
||||
|
||||
get :details, params: { name: 'vim' }
|
||||
assert_response :success
|
||||
assert_select '#related .pkgname', text: 'firefox'
|
||||
end
|
||||
|
||||
test 'details without embedding renders no related section' do
|
||||
get :details, params: { name: 'vim' }
|
||||
assert_response :success
|
||||
assert_select '#related', count: 0
|
||||
end
|
||||
|
||||
test 'search uses semantic (vector) results' do
|
||||
relation = Package.where(name: packages(:vim).name)
|
||||
with_stubbed_method(Package, :nearest_to_text, ->(_text, **_opts) { relation }) do
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue