From 71bb017074e39aab7f0463366c2d1fad09489cee Mon Sep 17 00:00:00 2001 From: Linghua Jin Date: Thu, 24 Jul 2025 09:59:14 -0700 Subject: [PATCH 1/2] use qdrant for face recognition example - make it easier to reference with other image search examples using same vector db --- examples/face_recognition/README.md | 7 ++++++- examples/face_recognition/main.py | 15 ++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/examples/face_recognition/README.md b/examples/face_recognition/README.md index 5d313dd42..9a31512eb 100644 --- a/examples/face_recognition/README.md +++ b/examples/face_recognition/README.md @@ -21,7 +21,12 @@ We appreciate a star ⭐ at [CocoIndex Github](https://github.com/cocoindex-io/c 1. [Install Postgres](https://cocoindex.io/docs/getting_started/installation#-install-postgres) if you don't have one. -2. dependencies: +2. Install Qdrant + ```bash + docker run -d -p 6334:6334 -p 6333:6333 qdrant/qdrant + ``` + +3. Install dependencies: ```bash pip install -e . diff --git a/examples/face_recognition/main.py b/examples/face_recognition/main.py index d7f04840b..ed1420a18 100644 --- a/examples/face_recognition/main.py +++ b/examples/face_recognition/main.py @@ -2,12 +2,14 @@ import io import dataclasses import datetime -import typing +import os import face_recognition from PIL import Image import numpy as np +QDRANT_URL = os.getenv("QDRANT_URL", "http://localhost:6334/") +QDRANT_COLLECTION = "face_embeddings" @dataclasses.dataclass class ImageRect: @@ -90,7 +92,7 @@ def face_recognition_flow( flow_builder: cocoindex.FlowBuilder, data_scope: cocoindex.DataScope ) -> None: """ - Define an example flow that embeds files into a vector database. + Define an example flow that embeds files into Qdrant vector database. """ data_scope["images"] = flow_builder.add_source( cocoindex.sources.LocalFile(path="images", binary=True), @@ -108,13 +110,16 @@ def face_recognition_flow( # Collect embeddings face_embeddings.collect( + id=cocoindex.GeneratedField.UUID, filename=image["filename"], rect=face["rect"], embedding=face["embedding"], ) face_embeddings.export( - "face_embeddings", - cocoindex.targets.Postgres(), - primary_key_fields=["filename", "rect"], + QDRANT_COLLECTION, + cocoindex.targets.Qdrant( + collection_name=QDRANT_COLLECTION + ), + primary_key_fields=["id"], ) From 164eb93e85e8216c8aa987a2bb7ef02b4d447b44 Mon Sep 17 00:00:00 2001 From: Linghua Jin Date: Thu, 24 Jul 2025 12:18:38 -0700 Subject: [PATCH 2/2] format --- examples/face_recognition/main.py | 9 ++++----- src/llm/vertex_ai.rs | 1 - 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/examples/face_recognition/main.py b/examples/face_recognition/main.py index ed1420a18..caf9b88c7 100644 --- a/examples/face_recognition/main.py +++ b/examples/face_recognition/main.py @@ -1,16 +1,17 @@ import cocoindex -import io import dataclasses import datetime +import io import os import face_recognition -from PIL import Image import numpy as np +from PIL import Image QDRANT_URL = os.getenv("QDRANT_URL", "http://localhost:6334/") QDRANT_COLLECTION = "face_embeddings" + @dataclasses.dataclass class ImageRect: min_x: int @@ -118,8 +119,6 @@ def face_recognition_flow( face_embeddings.export( QDRANT_COLLECTION, - cocoindex.targets.Qdrant( - collection_name=QDRANT_COLLECTION - ), + cocoindex.targets.Qdrant(collection_name=QDRANT_COLLECTION), primary_key_fields=["id"], ) diff --git a/src/llm/vertex_ai.rs b/src/llm/vertex_ai.rs index 8b1378917..e69de29bb 100644 --- a/src/llm/vertex_ai.rs +++ b/src/llm/vertex_ai.rs @@ -1 +0,0 @@ -