Sfoglia il codice sorgente

Move index to its own process that can be started by a rye script

jherve 1 anno fa
parent
commit
be08f28b67

+ 1 - 0
pyproject.toml

@@ -48,3 +48,4 @@ packages = ["src/de_quoi_parle_le_monde"]
 web_server = {cmd = "hypercorn de_quoi_parle_le_monde.web:app"}
 snapshots = {call = "de_quoi_parle_le_monde.snapshots"}
 embeddings = {call = "de_quoi_parle_le_monde.embeddings"}
+similarity_index = {call = "de_quoi_parle_le_monde.similarity_index"}

+ 0 - 46
src/de_quoi_parle_le_monde/main.py

@@ -1,46 +0,0 @@
-import asyncio
-from loguru import logger
-from attrs import frozen
-
-
-from de_quoi_parle_le_monde.http import HttpClient
-from de_quoi_parle_le_monde.storage import Storage
-from de_quoi_parle_le_monde.similarity_search import SimilaritySearch
-
-
-@frozen
-class Application:
-    http_client: HttpClient
-    storage: Storage
-    similarity_index: SimilaritySearch
-
-    async def run(self):
-        await asyncio.gather(
-            self._run_similarity_index(),
-        )
-        logger.info("Will quit now..")
-
-    async def _run_similarity_index(self):
-        logger.info("Starting index..")
-        try:
-            await self.similarity_index.add_embeddings()
-            logger.info("Similarity index ready")
-        except ValueError:
-            ...
-
-    @staticmethod
-    async def create():
-        http_client = HttpClient()
-        storage = await Storage.create()
-        sim_index = SimilaritySearch.create(storage)
-
-        return Application(http_client, storage, sim_index)
-
-
-async def main():
-    full_application = await Application.create()
-    await full_application.run()
-
-
-if __name__ == "__main__":
-    asyncio.run(main())

+ 20 - 0
src/de_quoi_parle_le_monde/similarity_search.py

@@ -1,9 +1,13 @@
+import asyncio
 from typing import Callable
 from loguru import logger
 import faiss
 import numpy as np
 
 
+from de_quoi_parle_le_monde.storage import Storage
+
+
 class SimilaritySearch:
     instance = None
 
@@ -64,3 +68,19 @@ class SimilaritySearch:
             cls.instance = SimilaritySearch(storage)
 
         return cls.instance
+
+
+async def main():
+    storage = await Storage.create()
+    sim_index = SimilaritySearch.create(storage)
+
+    logger.info("Starting index..")
+    try:
+        await sim_index.add_embeddings()
+        logger.info("Similarity index ready")
+    except ValueError:
+        ...
+
+
+if __name__ == "__main__":
+    asyncio.run(main())

+ 1 - 1
src/de_quoi_parle_le_monde/web.py

@@ -5,7 +5,7 @@ from fastapi.templating import Jinja2Templates
 
 from de_quoi_parle_le_monde.medias import media_collection
 from de_quoi_parle_le_monde.storage import Storage
-from de_quoi_parle_le_monde.similarity_search import SimilaritySearch
+from de_quoi_parle_le_monde.similarity_index import SimilaritySearch
 
 
 app = FastAPI()