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.
Merge pull request #41 from sshivaditya2019/issuesim
fix: add caution message
- Loading branch information
Showing
4 changed files
with
126 additions
and
52 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
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,33 @@ | ||
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; | ||
|
||
RETURN QUERY | ||
SELECT id AS issue_id, | ||
plaintext AS issue_plaintext, | ||
((0.8 * cosine_distance(current_quantized, embedding)) + 0.8 * (1 / (1 + l2_distance(current_quantized, embedding)))) as similarity | ||
FROM issues | ||
WHERE id <> current_id | ||
AND COALESCE(payload->'repository'->>'name', '') = COALESCE(current_repo, '') -- To handle Private Issues | ||
AND COALESCE(payload->'repository'->'owner'->>'login', '') = COALESCE(current_org, '') -- To handle Private Issues | ||
AND ((0.8 * cosine_distance(current_quantized, embedding)) + 0.8 * (1 / (1 + l2_distance(current_quantized, embedding)))) > threshold | ||
ORDER BY similarity DESC | ||
LIMIT top_k; | ||
END; | ||
$$ LANGUAGE plpgsql; |