File size: 1,730 Bytes
0994965 73bd20d 0994965 763eb46 2ff873b e93ffb4 0994965 2ff873b 0994965 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
import streamlit as st
from pymongo import MongoClient
import os
from pydantic import BaseModel
from typing import List
# Load environment variables
MONGO_URI = os.getenv("MONGO_URI")
MONGO_DB_NAME = os.getenv("MONGO_DB_NAME")
# Connect to MongoDB
client = MongoClient(MONGO_URI)
#db = client[MONGO_DB_NAME]
db = client["vector_db"]
#vectors_collection = db["vector_collection"]
vectors_collection = db["vector_collection"]
#client = MongoClient(connection_string, tls=True, tlsAllowInvalidCertificates=True)
# db = client[db_name]
# collection = db[collection_name]
# Define a Pydantic model for vectors
class Vector(BaseModel):
vector: List[float]
metadata: dict
# Streamlit app
st.title("MongoDB Vector Search with Streamlit")
# Form to insert a vector
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:
# Parse the vector and metadata
vector = [float(x) for x in vector_input.split(",")]
metadata = eval(metadata_input) # Convert JSON string to dict
# Create a Vector object
new_vector = Vector(vector=vector, metadata=metadata)
# Insert into MongoDB
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}")
# Display all vectors
st.write("## Stored Vectors")
vectors = vectors_collection.find()
for vector in vectors:
st.json(vector) |