sriramsrivatsan commited on
Commit
d2aa4ee
·
verified ·
1 Parent(s): d0a39e9

Upload streamlit_app.py

Browse files
Files changed (1) hide show
  1. streamlit_app.py +28 -2
streamlit_app.py CHANGED
@@ -1032,14 +1032,40 @@ class ChromaVectorStore:
1032
 
1033
  embeddings_list = embeddings.tolist()
1034
 
 
1035
  # Create document IDs
1036
  doc_ids = [f"doc_{i+j}" for j in range(len(batch_texts))]
1037
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1038
  # Add to Chroma collection
1039
  self.collection.add(
1040
  embeddings=embeddings_list,
1041
  documents=batch_texts,
1042
- metadatas=batch_metadatas,
1043
  ids=doc_ids
1044
  )
1045
 
 
1032
 
1033
  embeddings_list = embeddings.tolist()
1034
 
1035
+
1036
  # Create document IDs
1037
  doc_ids = [f"doc_{i+j}" for j in range(len(batch_texts))]
1038
+
1039
+ # Sanitize metadata: Chroma expects primitive metadata values (str,int,float,bool,None)
1040
+ sanitized_metadatas = []
1041
+ for md in batch_metadatas:
1042
+ clean_md = {}
1043
+ if not md:
1044
+ sanitized_metadatas.append(clean_md)
1045
+ continue
1046
+ for k, v in md.items():
1047
+ # Convert lists to comma-separated strings
1048
+ if isinstance(v, list):
1049
+ clean_md[k] = ', '.join(str(x) for x in v)
1050
+ # Convert dicts to JSON string
1051
+ elif isinstance(v, dict):
1052
+ try:
1053
+ clean_md[k] = json.dumps(v)
1054
+ except Exception:
1055
+ clean_md[k] = str(v)
1056
+ # Accept primitive types
1057
+ elif isinstance(v, (str, int, float, bool)) or v is None:
1058
+ clean_md[k] = v
1059
+ else:
1060
+ # Fallback to string representation
1061
+ clean_md[k] = str(v)
1062
+ sanitized_metadatas.append(clean_md)
1063
+
1064
  # Add to Chroma collection
1065
  self.collection.add(
1066
  embeddings=embeddings_list,
1067
  documents=batch_texts,
1068
+ metadatas=sanitized_metadatas,
1069
  ids=doc_ids
1070
  )
1071