feat: Add file URL to DocumentAnswer objects (#1874)

# Description

Please include a summary of the changes and the related issue. Please
also include relevant motivation and context.

## Checklist before requesting a review

Please delete options that are not relevant.

- [ ] My code follows the style guidelines of this project
- [ ] I have performed a self-review of my code
- [ ] I have commented hard-to-understand areas
- [ ] I have ideally added tests that prove my fix is effective or that
my feature works
- [ ] New and existing unit tests pass locally with my changes
- [ ] Any dependent changes have been merged

## Screenshots (if appropriate):
This commit is contained in:
Stan Girard 2023-12-12 23:16:32 +01:00 committed by GitHub
parent 36b008e0eb
commit 4a305a854e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 3 deletions

View File

@ -3,6 +3,7 @@ from uuid import UUID
from attr import dataclass
from logger import get_logger
from models.settings import get_embeddings, get_supabase_client
from repository.files.generate_file_signed_url import generate_file_signed_url
from vectorstore.supabase import CustomSupabaseVectorStore
logger = get_logger(__name__)
@ -31,12 +32,12 @@ def get_question_context_from_brain(brain_id: UUID, question: str) -> str:
)
documents = vector_store.similarity_search(question, k=20, threshold=0.8)
## Create a list of DocumentAnswer objects from the documents but with no duplicates file_sha1
answers = []
file_sha1s = []
for document in documents:
if document.metadata["file_sha1"] not in file_sha1s:
file_sha1s.append(document.metadata["file_sha1"])
file_path_in_storage = f"{brain_id}/{document.metadata['file_name']}"
answers.append(
DocumentAnswer(
file_name=document.metadata["file_name"],
@ -44,7 +45,10 @@ def get_question_context_from_brain(brain_id: UUID, question: str) -> str:
file_size=document.metadata["file_size"],
file_id=document.metadata["id"],
file_similarity=document.metadata["similarity"],
)
file_url=generate_file_signed_url(file_path_in_storage).get(
"signedURL", ""
),
),
)
return answers

View File

@ -5,7 +5,7 @@ from supabase.client import Client
logger = get_logger()
SIGNED_URL_EXPIRATION_PERIOD_IN_SECONDS = 600
SIGNED_URL_EXPIRATION_PERIOD_IN_SECONDS = 3600
def generate_file_signed_url(path):