Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(memory-store): fix vector search function #1046

Merged
merged 3 commits into from
Jan 13, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions agents-api/agents_api/autogen/Docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ class HybridDocSearchRequest(BaseDocSearchRequest):
model_config = ConfigDict(
populate_by_name=True,
)
confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0
confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0
"""
The confidence cutoff level
"""
Expand Down Expand Up @@ -222,7 +222,7 @@ class VectorDocSearchRequest(BaseDocSearchRequest):
model_config = ConfigDict(
populate_by_name=True,
)
confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0
confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0
"""
The confidence cutoff level
"""
Expand Down
4 changes: 2 additions & 2 deletions integrations-service/integrations/autogen/Docs.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ class HybridDocSearchRequest(BaseDocSearchRequest):
model_config = ConfigDict(
populate_by_name=True,
)
confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0
confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0
"""
The confidence cutoff level
"""
Expand Down Expand Up @@ -222,7 +222,7 @@ class VectorDocSearchRequest(BaseDocSearchRequest):
model_config = ConfigDict(
populate_by_name=True,
)
confidence: Annotated[float, Field(ge=0.0, le=1.0)] = 0
confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0
"""
The confidence cutoff level
"""
Expand Down
16 changes: 8 additions & 8 deletions memory-store/migrations/000022_vector_search.up.sql
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ CREATE OR REPLACE FUNCTION search_by_vector (
owner_types TEXT[],
owner_ids UUID [],
k integer DEFAULT 3,
confidence float DEFAULT 0.5,
confidence float DEFAULT 0.0,
metadata_filter jsonb DEFAULT NULL
) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$
DECLARE
Expand All @@ -19,8 +19,8 @@ BEGIN
RAISE EXCEPTION 'k must be greater than 0';
END IF;

IF confidence < 0 OR confidence > 1 THEN
RAISE EXCEPTION 'confidence must be between 0 and 1';
IF confidence < -1 OR confidence > 1 THEN
RAISE EXCEPTION 'confidence must be between -1 and 1';
END IF;

IF owner_types IS NOT NULL AND owner_ids IS NOT NULL AND
Expand All @@ -29,7 +29,7 @@ BEGIN
END IF;

-- Calculate search threshold from confidence
search_threshold := confidence;
search_threshold := 1.0 - confidence;

-- Build owner filter SQL
owner_filter_sql := '
Expand All @@ -53,23 +53,23 @@ BEGIN
d.index,
d.title,
d.content,
((1 - (d.embedding <=> $1)) + 1) * 0.5 as distance,
(d.embedding <=> $1) as distance,
d.embedding,
d.metadata,
doc_owners.owner_type,
doc_owners.owner_id
FROM docs_embeddings d
LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id
WHERE d.developer_id = $7
AND ((1 - (d.embedding <=> $1)) + 1) * 0.5 >= $2
AND (d.embedding <=> $1) <= $2
%s
%s
ORDER BY ((1 - (d.embedding <=> $1)) + 1) * 0.5 DESC
ORDER BY (d.embedding <=> $1) ASC
LIMIT ($3 * 4) -- Get more candidates than needed
)
SELECT DISTINCT ON (doc_id) *
FROM ranked_docs
ORDER BY doc_id, distance DESC
ORDER BY doc_id, distance ASC
LIMIT $3',
owner_filter_sql,
metadata_filter_sql
Expand Down
4 changes: 2 additions & 2 deletions typespec/docs/models.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ model BaseDocSearchRequest {

model VectorDocSearchRequest extends BaseDocSearchRequest {
/** The confidence cutoff level */
@minValue(0)
@minValue(-1)
@maxValue(1)
confidence: float = 0;

Expand All @@ -146,7 +146,7 @@ model TextOnlyDocSearchRequest extends BaseDocSearchRequest {

model HybridDocSearchRequest extends BaseDocSearchRequest {
/** The confidence cutoff level */
@minValue(0)
@minValue(-1)
@maxValue(1)
confidence: float = 0;

Expand Down
4 changes: 2 additions & 2 deletions typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2983,7 +2983,7 @@ components:
properties:
confidence:
type: number
minimum: 0
minimum: -1
maximum: 1
description: The confidence cutoff level
default: 0
Expand Down Expand Up @@ -3066,7 +3066,7 @@ components:
properties:
confidence:
type: number
minimum: 0
minimum: -1
maximum: 1
description: The confidence cutoff level
default: 0
Expand Down
Loading