generated from ubiquity-os/plugin-template
-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
75af465
commit a184884
Showing
3 changed files
with
40 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
DROP FUNCTION IF EXISTS find_similar_issues; | ||
|
||
CREATE OR REPLACE FUNCTION find_similar_issues(current_id VARCHAR, query_embedding vector(1024), threshold float8, top_k INT) | ||
RETURNS TABLE(issue_id VARCHAR, issue_plaintext TEXT, similarity float8) AS $$ | ||
DECLARE | ||
current_quantized vector(1024); | ||
current_repo TEXT; | ||
current_org TEXT; | ||
BEGIN | ||
-- Ensure the query_embedding is in the correct format | ||
current_quantized := query_embedding; | ||
|
||
-- Extract the current issue's repo and org from the payload | ||
SELECT | ||
payload->'repository'->>'name'::text, | ||
payload->'repository'->'owner'->>'login'::text | ||
INTO current_repo, current_org | ||
FROM issues | ||
WHERE id = current_id; | ||
|
||
-- Check if the current issue has valid repo and org | ||
IF current_repo IS NULL OR current_org IS NULL THEN | ||
RETURN; -- Exit if current issue's repo or org is null | ||
END IF; | ||
|
||
RETURN QUERY | ||
SELECT id AS issue_id, | ||
plaintext AS issue_plaintext, | ||
1 - (l2_distance(current_quantized, embedding)) AS similarity | ||
FROM issues | ||
WHERE id <> current_id | ||
AND current_repo = payload->'repository'->>'name'::text | ||
AND current_org = payload->'repository'->'owner'->>'login'::text | ||
AND 1 - l2_distance(current_quantized, embedding) > threshold -- Ensure similarity exceeds threshold | ||
ORDER BY similarity DESC | ||
LIMIT top_k; | ||
END; | ||
$$ LANGUAGE plpgsql; |