|
|
import streamlit as st |
|
|
from pymongo import MongoClient |
|
|
import os |
|
|
from pydantic import BaseModel |
|
|
from typing import List |
|
|
|
|
|
|
|
|
|
|
|
MONGO_URI = os.getenv("MONGO_URI") |
|
|
MONGO_DB_NAME = os.getenv("MONGO_DB_NAME") |
|
|
|
|
|
|
|
|
client = MongoClient(MONGO_URI) |
|
|
|
|
|
db = client["vector_db"] |
|
|
|
|
|
vectors_collection = db["vector_collection"] |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Vector(BaseModel): |
|
|
vector: List[float] |
|
|
metadata: dict |
|
|
|
|
|
|
|
|
st.title("MongoDB Vector Search with Streamlit") |
|
|
|
|
|
|
|
|
with st.form("vector_form"): |
|
|
st.write("Insert a new vector") |
|
|
vector_input = st.text_input("Enter vector (comma-separated floats):") |
|
|
metadata_input = st.text_input("Enter metadata (JSON format):") |
|
|
submitted = st.form_submit_button("Submit") |
|
|
|
|
|
if submitted: |
|
|
try: |
|
|
|
|
|
vector = [float(x) for x in vector_input.split(",")] |
|
|
metadata = eval(metadata_input) |
|
|
|
|
|
|
|
|
new_vector = Vector(vector=vector, metadata=metadata) |
|
|
|
|
|
|
|
|
result = vectors_collection.insert_one(new_vector.dict()) |
|
|
st.success(f"Vector inserted with ID: {result.inserted_id}") |
|
|
except Exception as e: |
|
|
st.error(f"Error: {e}") |
|
|
|
|
|
|
|
|
st.write("## Stored Vectors") |
|
|
vectors = vectors_collection.find() |
|
|
for vector in vectors: |
|
|
st.json(vector) |