-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
# Description - Save and load brain to disk: ```python async def main(): with tempfile.NamedTemporaryFile(mode="w", suffix=".txt") as temp_file: temp_file.write("Gold is a liquid of blue-like colour.") temp_file.flush() brain = await Brain.afrom_files(name="test_brain", file_paths=[temp_file.name]) save_path = await brain.save("/home/amine/.local/quivr") brain_loaded = Brain.load(save_path) brain_loaded.print_info() ``` # TODO: - Loading all chat history - Loading from other vector stores, PG for example can be great ...
- Loading branch information
Showing
12 changed files
with
310 additions
and
62 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
import asyncio | ||
import tempfile | ||
|
||
from quivr_core import Brain | ||
|
||
|
||
async def main(): | ||
with tempfile.NamedTemporaryFile(mode="w", suffix=".txt") as temp_file: | ||
temp_file.write("Gold is a liquid of blue-like colour.") | ||
temp_file.flush() | ||
|
||
brain = await Brain.afrom_files(name="test_brain", file_paths=[temp_file.name]) | ||
|
||
save_path = await brain.save("/home/amine/.local/quivr") | ||
|
||
brain_loaded = Brain.load(save_path) | ||
brain_loaded.print_info() | ||
|
||
|
||
if __name__ == "__main__": | ||
# Run the main function in the existing event loop | ||
asyncio.run(main()) |
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 |
---|---|---|
@@ -1,22 +1,23 @@ | ||
import tempfile | ||
|
||
from quivr_core import Brain | ||
from quivr_core.quivr_rag_langgraph import QuivrQARAGLangGraph | ||
from quivr_core.quivr_rag import QuivrQARAG | ||
from quivr_core.quivr_rag_langgraph import QuivrQARAGLangGraph | ||
|
||
if __name__ == "__main__": | ||
with tempfile.NamedTemporaryFile(mode="w", suffix=".txt") as temp_file: | ||
temp_file.write("Gold is a liquid of blue-like colour.") | ||
temp_file.flush() | ||
|
||
brain = Brain.from_files(name="test_brain", | ||
file_paths=[temp_file.name], | ||
) | ||
brain = Brain.from_files( | ||
name="test_brain", | ||
file_paths=[temp_file.name], | ||
) | ||
|
||
answer = brain.ask("what is gold? asnwer in french", | ||
rag_pipeline=QuivrQARAGLangGraph) | ||
answer = brain.ask( | ||
"what is gold? asnwer in french", rag_pipeline=QuivrQARAGLangGraph | ||
) | ||
print("answer QuivrQARAGLangGraph :", answer.answer) | ||
|
||
|
||
answer = brain.ask("what is gold? asnwer in french", | ||
rag_pipeline=QuivrQARAG) | ||
print("answer QuivrQARAG :", answer.answer) | ||
answer = brain.ask("what is gold? asnwer in french", rag_pipeline=QuivrQARAG) | ||
print("answer QuivrQARAG :", answer.answer) |
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 |
---|---|---|
@@ -1,29 +1,34 @@ | ||
from dotenv import load_dotenv | ||
import tempfile | ||
import asyncio | ||
import tempfile | ||
|
||
from dotenv import load_dotenv | ||
from quivr_core import Brain | ||
from quivr_core.quivr_rag_langgraph import QuivrQARAGLangGraph | ||
from quivr_core.quivr_rag import QuivrQARAG | ||
from quivr_core.quivr_rag_langgraph import QuivrQARAGLangGraph | ||
|
||
|
||
async def main(): | ||
dotenv_path = "/Users/jchevall/Coding/QuivrHQ/quivr/.env" | ||
load_dotenv(dotenv_path) | ||
|
||
with tempfile.NamedTemporaryFile(mode="w", suffix=".txt") as temp_file: | ||
temp_file.write("Gold is a liquid of blue-like colour.") | ||
temp_file.flush() | ||
|
||
brain = await Brain.afrom_files(name="test_brain", | ||
file_paths=[temp_file.name]) | ||
brain = await Brain.afrom_files(name="test_brain", file_paths=[temp_file.name]) | ||
|
||
await brain.save("~/.local/quivr") | ||
|
||
question = "what is gold? answer in french" | ||
async for chunk in brain.ask_streaming(question, rag_pipeline=QuivrQARAG): | ||
print("answer QuivrQARAG:", chunk.answer) | ||
print("answer QuivrQARAG:", chunk.answer) | ||
|
||
async for chunk in brain.ask_streaming(question, rag_pipeline=QuivrQARAGLangGraph): | ||
async for chunk in brain.ask_streaming( | ||
question, rag_pipeline=QuivrQARAGLangGraph | ||
): | ||
print("answer QuivrQARAGLangGraph:", chunk.answer) | ||
|
||
|
||
if __name__ == "__main__": | ||
# Run the main function in the existing event loop | ||
asyncio.run(main()) | ||
asyncio.run(main()) |
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,55 @@ | ||
from pathlib import Path | ||
from typing import Any, Dict, Literal, Union | ||
from uuid import UUID | ||
|
||
from pydantic import BaseModel, Field, SecretStr | ||
|
||
from quivr_core.config import LLMEndpointConfig | ||
from quivr_core.files.file import QuivrFileSerialized | ||
from quivr_core.models import ChatMessage | ||
|
||
|
||
class EmbedderConfig(BaseModel): | ||
embedder_type: Literal["openai_embedding"] = "openai_embedding" | ||
# TODO: type this correctly | ||
config: Dict[str, Any] | ||
|
||
|
||
class PGVectorConfig(BaseModel): | ||
vectordb_type: Literal["pgvector"] = "pgvector" | ||
pg_url: str | ||
pg_user: str | ||
pg_psswd: SecretStr | ||
table_name: str | ||
vector_dim: int | ||
|
||
|
||
class FAISSConfig(BaseModel): | ||
vectordb_type: Literal["faiss"] = "faiss" | ||
vectordb_folder_path: str | ||
|
||
|
||
class LocalStorageConfig(BaseModel): | ||
storage_type: Literal["local_storage"] = "local_storage" | ||
storage_path: Path | ||
files: dict[UUID, QuivrFileSerialized] | ||
|
||
|
||
class TransparentStorageConfig(BaseModel): | ||
storage_type: Literal["transparent_storage"] = "transparent_storage" | ||
files: dict[UUID, QuivrFileSerialized] | ||
|
||
|
||
class BrainSerialized(BaseModel): | ||
id: UUID | ||
name: str | ||
chat_history: list[ChatMessage] | ||
vectordb_config: Union[FAISSConfig, PGVectorConfig] = Field( | ||
..., discriminator="vectordb_type" | ||
) | ||
storage_config: Union[TransparentStorageConfig, LocalStorageConfig] = Field( | ||
..., discriminator="storage_type" | ||
) | ||
|
||
llm_config: LLMEndpointConfig | ||
embedding_config: EmbedderConfig |
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
Oops, something went wrong.