rbbist commited on
Commit
2115505
·
verified ·
1 Parent(s): 42f39de

Update menu_chromadb_semantic_search.py

Browse files
Files changed (1) hide show
  1. menu_chromadb_semantic_search.py +50 -50
menu_chromadb_semantic_search.py CHANGED
@@ -1,50 +1,50 @@
1
- import chromadb
2
- from chromadb.utils import embedding_functions
3
- import csv
4
-
5
- # --- Setup ChromaDB (in-memory for Hugging Face Spaces free tier) ---
6
- chroma_client = chromadb.Client()
7
-
8
- # SentenceTransformer embedding function
9
- sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(
10
- model_name="all-MiniLM-L6-v2"
11
- )
12
-
13
- # Create collection
14
- collection = chroma_client.create_collection(
15
- name="my_collection",
16
- embedding_function=sentence_transformer_ef
17
- )
18
-
19
- # --- Load CSV data ---
20
- with open("menu_items.csv") as file:
21
- lines = csv.reader(file)
22
- documents = []
23
- metadatas = []
24
- ids = []
25
-
26
- for i, line in enumerate(lines):
27
- if i == 0:
28
- continue # skip header
29
- documents.append(line[1])
30
- metadatas.append({"item_id": line[0]})
31
- ids.append(str(i))
32
-
33
- # Add to ChromaDB
34
- collection.add(
35
- documents=documents,
36
- metadatas=metadatas,
37
- ids=ids
38
- )
39
-
40
- def search_dishes(query: str) -> str:
41
- """Search for top 5 similar dishes."""
42
- results = collection.query(
43
- query_texts=[query],
44
- n_results=5,
45
- include=["documents", "metadatas"]
46
- )
47
- hits = results["documents"][0]
48
- ids_meta = results["metadatas"][0]
49
- output = [f"{ids_meta[i]['item_id']}: {hits[i]}" for i in range(len(hits))]
50
- return "\n".join(output)
 
1
+ import chromadb
2
+ from chromadb.utils import embedding_functions
3
+ import csv
4
+
5
+ # --- Setup ChromaDB (in-memory for Hugging Face Spaces free tier) ---
6
+ chroma_client = chromadb.Client()
7
+
8
+ # SentenceTransformer embedding function
9
+ sentence_transformer_ef = embedding_functions.SentenceTransformerEmbeddingFunction(
10
+ model_name="all-mpnet-base-v2"
11
+ )
12
+
13
+ # Create collection
14
+ collection = chroma_client.create_collection(
15
+ name="my_collection",
16
+ embedding_function=sentence_transformer_ef
17
+ )
18
+
19
+ # --- Load CSV data ---
20
+ with open("menu_items.csv") as file:
21
+ lines = csv.reader(file)
22
+ documents = []
23
+ metadatas = []
24
+ ids = []
25
+
26
+ for i, line in enumerate(lines):
27
+ if i == 0:
28
+ continue # skip header
29
+ documents.append(line[1])
30
+ metadatas.append({"item_id": line[0]})
31
+ ids.append(str(i))
32
+
33
+ # Add to ChromaDB
34
+ collection.add(
35
+ documents=documents,
36
+ metadatas=metadatas,
37
+ ids=ids
38
+ )
39
+
40
+ def search_dishes(query: str) -> str:
41
+ """Search for top 5 similar dishes."""
42
+ results = collection.query(
43
+ query_texts=[query],
44
+ n_results=5,
45
+ include=["documents", "metadatas"]
46
+ )
47
+ hits = results["documents"][0]
48
+ ids_meta = results["metadatas"][0]
49
+ output = [f"{ids_meta[i]['item_id']}: {hits[i]}" for i in range(len(hits))]
50
+ return "\n".join(output)