chasetank commited on
Commit
8c41dd4
1 Parent(s): ff2d0df

Initial Commit

Browse files
.gitattributes CHANGED
@@ -32,3 +32,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
32
  *.zip filter=lfs diff=lfs merge=lfs -text
33
  *.zst filter=lfs diff=lfs merge=lfs -text
34
  *tfevents* filter=lfs diff=lfs merge=lfs -text
35
+ data/s-class-manual/index.faiss filter=lfs diff=lfs merge=lfs -text
InnovationHub/llm/__pycache__/chain.cpython-310.pyc ADDED
Binary file (3.56 kB). View file
 
InnovationHub/llm/__pycache__/vector_store.cpython-310.pyc ADDED
Binary file (2.72 kB). View file
 
InnovationHub/llm/chain.py ADDED
@@ -0,0 +1,91 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import pprint
3
+ import codecs
4
+ import chardet
5
+ import gradio as gr
6
+ from langchain.llms import HuggingFacePipeline
7
+ from langchain.text_splitter import RecursiveCharacterTextSplitter
8
+ from langchain.embeddings import HuggingFaceEmbeddings
9
+ from langchain.vectorstores import FAISS
10
+ from langchain import OpenAI, ConversationChain, LLMChain, PromptTemplate
11
+ from langchain.chains.conversation.memory import ConversationalBufferWindowMemory
12
+ from EdgeGPT import Chatbot
13
+
14
+ db_path = 'data/s-class-manual'
15
+ cookie_path = 'data/cookies.json'
16
+ embeddings = HuggingFaceEmbeddings()
17
+
18
+
19
+ index = FAISS.load_local(folder_path=db_path, embeddings=embeddings)
20
+ bot = Chatbot(cookiePath=cookie_path)
21
+
22
+ def init_chain():
23
+ template = """
24
+ {history}
25
+ Human: {human_input}
26
+ Assistant:"""
27
+
28
+ prompt = PromptTemplate(
29
+ input_variables=["history", "human_input"],
30
+ template=template
31
+ )
32
+
33
+ chatgpt_chain = LLMChain(
34
+ llm=OpenAI(temperature=0),
35
+ prompt=prompt,
36
+ verbose=True,
37
+ memory=ConversationalBufferWindowMemory(k=2),
38
+ )
39
+ human_input = """I want you to act as a voice assistant for a mercedes-benz vehicle. I will provide you with exerts from a vehicle manual. You must use the exerts to answer the user question as best as you can. If you are unsure about the answer, you will truthfully say "not sure"."""
40
+ bot_response = chatgpt_chain.predict(human_input=human_input)
41
+ print(bot_response)
42
+ return chatgpt_chain
43
+
44
+
45
+ def get_prompt(question, index, k=4):
46
+ prompt = """I need information from my vehicle manual. I will provide an [EXCERT] from the manual. Use the [EXCERT] and nothing else to answer the [QUESTION]. You must refer to the "[EXCERT]" as "S-Clss Manual" in your response. Here is the [EXCERT]:"""
47
+ similar_docs = index.similarity_search(query=question, k=k)
48
+ context = []
49
+ for d in similar_docs:
50
+ content = d.page_content
51
+ context.append(content)
52
+ user_input = prompt + '\n[EXCERT]' + '\n' + \
53
+ '\n'.join(context[:k]) + '\n' + '[QUESTION]\n' + question
54
+ return user_input
55
+
56
+
57
+ async def ask_question(question, index, backend='bing', k=2, create_bot=False):
58
+ global bot
59
+ if bot is None or create_bot:
60
+ bot = Chatbot(cookiePath=cookie_path)
61
+ if backend == 'bing':
62
+ prompt = get_prompt(question=question, index=index, k=k)
63
+ response = (await bot.ask(prompt=prompt))["item"]["messages"][1]["adaptiveCards"][0]["body"][0]["text"]
64
+ elif backend == 'gpt3':
65
+ prompt = get_prompt(question=question, index=index, k=k)
66
+ response = chatgpt_chain.predict(human_input=prompt)
67
+ else:
68
+ raise ValueError(f"Invalid backend specified: {backend}")
69
+ return response
70
+
71
+
72
+ async def chatbot(question, create_bot=False, k=2):
73
+ response = await ask_question(question=question, index=index, backend='bing', k=k, create_bot=create_bot)
74
+ return response
75
+
76
+
77
+ def start_ui():
78
+ chatbot_interface = gr.Interface(
79
+ fn=chatbot,
80
+ inputs=["text", gr.inputs.Checkbox(label="Create bot"), gr.inputs.Slider(
81
+ minimum=1, maximum=10, step=1, label="k")],
82
+ outputs="text",
83
+ title="Owner's Manual",
84
+ description="Ask your vehicle manual and get a response.",
85
+ examples=[
86
+ ["What are the different features of the dashboard console?", True, 2],
87
+ ["What do they do?", False, 3]
88
+ ]
89
+ )
90
+
91
+ chatbot_interface.launch()
InnovationHub/llm/vector_store.py ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import pprint
3
+ import codecs
4
+ import chardet
5
+ import gradio as gr
6
+ from langchain.llms import HuggingFacePipeline
7
+ from langchain.text_splitter import RecursiveCharacterTextSplitter
8
+ from langchain.embeddings import HuggingFaceEmbeddings
9
+ from langchain.vectorstores import FAISS
10
+ from langchain import OpenAI, ConversationChain, LLMChain, PromptTemplate
11
+ from langchain.chains.conversation.memory import ConversationalBufferWindowMemory
12
+ from EdgeGPT import Chatbot
13
+
14
+
15
+ def get_content(input_file):
16
+ # Read the input file in binary mode
17
+ with open(input_file, 'rb') as f:
18
+ raw_data = f.read()
19
+
20
+ # Detect the encoding of the file
21
+ result = chardet.detect(raw_data)
22
+ encoding = result['encoding']
23
+
24
+ # Decode the contents using the detected encoding
25
+ with codecs.open(input_file, 'r', encoding=encoding) as f:
26
+ raw_text = f.read()
27
+
28
+ # Return the content of the input file
29
+ return raw_text
30
+
31
+
32
+ def create_docs(input_file):
33
+ # Create a text splitter object with a separator character
34
+ text_splitter = RecursiveCharacterTextSplitter(
35
+ chunk_size=1000,
36
+ chunk_overlap=0,
37
+ length_function=len,
38
+ )
39
+
40
+ basename = os.path.basename(input_file)
41
+ basename = os.path.splitext(basename)[0]
42
+ texts = get_content(input_file=input_file)
43
+ metadatas = {'source': basename}
44
+ docs = text_splitter.create_documents(texts=[texts], metadatas=[metadatas])
45
+ return docs
46
+
47
+
48
+ def get_similar_docs(query, index):
49
+ similar_docs = index.similarity_search(query=query)
50
+ result = [(d.summary, d.metadata) for d in similar_docs]
51
+ return result
52
+
53
+
54
+ def convert_to_html(similar_docs):
55
+ result = []
56
+ for summary, metadata in similar_docs:
57
+ record = '<tr><td>' + summary + '</td><td>' + \
58
+ metadata['source'] + '</td></tr>'
59
+ result.append(record)
60
+ html = '<table><thead><th>Page Content</th><th>Source</th></thead><tbody>' + \
61
+ '\n'.join(result) + '</tbody></table>'
62
+ return html
63
+
64
+
65
+ def start_ui(index):
66
+ def query_index(query):
67
+ similar_docs = get_similar_docs(query=query, index=index)
68
+ formatted_output = convert_to_html(similar_docs=similar_docs)
69
+ return formatted_output
70
+
71
+ # Define input and output types
72
+ input = gr.inputs.Textbox(lines=2)
73
+ output = gr.outputs.HTML()
74
+
75
+ # Create interface object
76
+ iface = gr.Interface(fn=query_index,
77
+ inputs=input,
78
+ outputs=output)
79
+
80
+ # Launch interface
81
+ iface.launch()
app.py ADDED
@@ -0,0 +1,31 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from InnovationHub.llm.vector_store import *
2
+ from InnovationHub.llm.chain import *
3
+ """
4
+ # Create the vector index
5
+ db_path = "./data/s-class-manual"
6
+ # docs = create_docs(input_file=input_file)
7
+ embeddings = HuggingfaceEmbeddings()
8
+ index = FAISS(docs=docs, folder_path=db_path, embeddings=embeddings)
9
+
10
+
11
+ """
12
+ # Launch the Gradio UI
13
+ def start_gradio():
14
+ chatbot_interface = gr.Interface(
15
+ fn=chatbot,
16
+ inputs=["text", gr.inputs.Checkbox(label="Create bot"), gr.inputs.Slider(
17
+ minimum=1, maximum=10, step=1, label="k")],
18
+ outputs="text",
19
+ title="Owner's Manual",
20
+ description="Ask your vehicle manual and get a response.",
21
+ examples=[
22
+ ["What are the different features of the dashboard console?", True, 2],
23
+ ["What do they do?", False, 3]
24
+ ]
25
+ )
26
+ chatbot_interface.launch()
27
+
28
+
29
+ if __name__ == '__main__':
30
+ start_ui()
31
+
data/cookies.json ADDED
@@ -0,0 +1,334 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "domain": ".bing.com",
4
+ "expirationDate": 1693084730.995954,
5
+ "hostOnly": false,
6
+ "httpOnly": false,
7
+ "name": "SnrOvr",
8
+ "path": "/",
9
+ "sameSite": "no_restriction",
10
+ "secure": true,
11
+ "session": false,
12
+ "storeId": null,
13
+ "value": "X=rebateson"
14
+ },
15
+ {
16
+ "domain": ".bing.com",
17
+ "expirationDate": 1693084728.242456,
18
+ "hostOnly": false,
19
+ "httpOnly": false,
20
+ "name": "SRCHUSR",
21
+ "path": "/",
22
+ "sameSite": "no_restriction",
23
+ "secure": true,
24
+ "session": false,
25
+ "storeId": null,
26
+ "value": "DOB=20230213&T=1677532610000&TPC=1677532618000&POEX=W"
27
+ },
28
+ {
29
+ "domain": "www.bing.com",
30
+ "expirationDate": 1677534414,
31
+ "hostOnly": true,
32
+ "httpOnly": false,
33
+ "name": "ai_session",
34
+ "path": "/",
35
+ "sameSite": "no_restriction",
36
+ "secure": true,
37
+ "session": false,
38
+ "storeId": null,
39
+ "value": "T/ScFymgAbapbThIbe8VVn|1677532614979|1677532614979"
40
+ },
41
+ {
42
+ "domain": ".bing.com",
43
+ "expirationDate": 1677575810.751611,
44
+ "hostOnly": false,
45
+ "httpOnly": true,
46
+ "name": "SUID",
47
+ "path": "/",
48
+ "sameSite": "no_restriction",
49
+ "secure": true,
50
+ "session": false,
51
+ "storeId": null,
52
+ "value": "A"
53
+ },
54
+ {
55
+ "domain": ".bing.com",
56
+ "expirationDate": 1678137537.360376,
57
+ "hostOnly": false,
58
+ "httpOnly": false,
59
+ "name": "SRCHHPGUSR",
60
+ "path": "/",
61
+ "sameSite": "no_restriction",
62
+ "secure": true,
63
+ "session": false,
64
+ "storeId": null,
65
+ "value": "SRCHLANG=en&BRW=XW&BRH=M&CW=1920&CH=951&SCW=1903&SCH=3553&DPR=1.0&UTC=-300&DM=1&HV=1677532731&PRVCW=1920&PRVCH=951&WTS=63813129410"
66
+ },
67
+ {
68
+ "domain": ".bing.com",
69
+ "expirationDate": 1693084729.526404,
70
+ "hostOnly": false,
71
+ "httpOnly": false,
72
+ "name": "ANON",
73
+ "path": "/",
74
+ "sameSite": "no_restriction",
75
+ "secure": true,
76
+ "session": false,
77
+ "storeId": null,
78
+ "value": "A=0CEEFDC684B6E0003319CE0CFFFFFFFF&E=1bfb&W=1"
79
+ },
80
+ {
81
+ "domain": "www.bing.com",
82
+ "expirationDate": 1678137414.836653,
83
+ "hostOnly": true,
84
+ "httpOnly": false,
85
+ "name": "MicrosoftApplicationsTelemetryDeviceId",
86
+ "path": "/",
87
+ "sameSite": "no_restriction",
88
+ "secure": true,
89
+ "session": false,
90
+ "storeId": null,
91
+ "value": "e73ad670-27f9-42a1-ab2c-11ba565d0d40"
92
+ },
93
+ {
94
+ "domain": ".bing.com",
95
+ "hostOnly": false,
96
+ "httpOnly": false,
97
+ "name": "_SS",
98
+ "path": "/",
99
+ "sameSite": "no_restriction",
100
+ "secure": true,
101
+ "session": true,
102
+ "storeId": null,
103
+ "value": "SID=11F05B259A64654F23E7496D9B066475&R=615&RB=615&GB=0&RG=0&RP=615&OCID=MY0291"
104
+ },
105
+ {
106
+ "domain": ".bing.com",
107
+ "hostOnly": false,
108
+ "httpOnly": false,
109
+ "name": "ipv6",
110
+ "path": "/",
111
+ "sameSite": "no_restriction",
112
+ "secure": true,
113
+ "session": true,
114
+ "storeId": null,
115
+ "value": "hit=1677536212634&t=4"
116
+ },
117
+ {
118
+ "domain": ".bing.com",
119
+ "hostOnly": false,
120
+ "httpOnly": false,
121
+ "name": "dsc",
122
+ "path": "/",
123
+ "sameSite": "no_restriction",
124
+ "secure": true,
125
+ "session": true,
126
+ "storeId": null,
127
+ "value": "order=News"
128
+ },
129
+ {
130
+ "domain": ".bing.com",
131
+ "expirationDate": 1678742329.526777,
132
+ "hostOnly": false,
133
+ "httpOnly": false,
134
+ "name": "_U",
135
+ "path": "/",
136
+ "sameSite": "no_restriction",
137
+ "secure": true,
138
+ "session": false,
139
+ "storeId": null,
140
+ "value": "187HIdeq_GJRLjSKHkwb4YIkSMlAVA9OfUbP61r-Qf9tviJx-N77BZ89XjJB7Poh0Oq_nWPX8520bV_6aOrt_NSNc8T3gPdFl91ZZgNfdPKuvrVa9x1alQXULme4YfoDYl0RVx3Tgz4zzu17UP8gUE4QXJrp3vEqYUPlo_7PxE-NyGIpI2jJYwyUqJndAHkziKootSgBohaAS4Y60GmG5hA"
141
+ },
142
+ {
143
+ "domain": ".bing.com",
144
+ "expirationDate": 1682258471.766994,
145
+ "hostOnly": false,
146
+ "httpOnly": false,
147
+ "name": "SRCHD",
148
+ "path": "/",
149
+ "sameSite": "no_restriction",
150
+ "secure": true,
151
+ "session": false,
152
+ "storeId": null,
153
+ "value": "AF=NOFORM"
154
+ },
155
+ {
156
+ "domain": ".bing.com",
157
+ "expirationDate": 1693084729.52654,
158
+ "hostOnly": false,
159
+ "httpOnly": false,
160
+ "name": "PPLState",
161
+ "path": "/",
162
+ "sameSite": "no_restriction",
163
+ "secure": true,
164
+ "session": false,
165
+ "storeId": null,
166
+ "value": "1"
167
+ },
168
+ {
169
+ "domain": ".bing.com",
170
+ "expirationDate": 1682258471.766982,
171
+ "hostOnly": false,
172
+ "httpOnly": true,
173
+ "name": "_EDGE_V",
174
+ "path": "/",
175
+ "sameSite": null,
176
+ "secure": false,
177
+ "session": false,
178
+ "storeId": null,
179
+ "value": "1"
180
+ },
181
+ {
182
+ "domain": ".bing.com",
183
+ "expirationDate": 1693084729.526456,
184
+ "hostOnly": false,
185
+ "httpOnly": false,
186
+ "name": "NAP",
187
+ "path": "/",
188
+ "sameSite": "no_restriction",
189
+ "secure": true,
190
+ "session": false,
191
+ "storeId": null,
192
+ "value": "V=1.9&E=1ba1&C=5ZkcuIJ3eTDwUrPvHRSZnNESxen1NOb4VIgq9GwVEvhgwC07YecacA&W=1"
193
+ },
194
+ {
195
+ "domain": ".bing.com",
196
+ "expirationDate": 1693084731.141086,
197
+ "hostOnly": false,
198
+ "httpOnly": false,
199
+ "name": "_RwBf",
200
+ "path": "/",
201
+ "sameSite": "no_restriction",
202
+ "secure": true,
203
+ "session": false,
204
+ "storeId": null,
205
+ "value": "ilt=4&ihpd=0&ispd=1&rc=615&rb=615&gb=0&rg=0&pc=615&mtu=0&rbb=0.0&g=0&cid=&clo=0&v=4&l=2023-02-27T08:00:00.0000000Z&lft=0001-01-01T00:00:00.0000000&aof=0&o=16&p=bingcopilotwaitlist&c=MY00IA&t=5310&s=2023-02-13T21:02:03.7661483+00:00&ts=2023-02-27T21:18:50.8966302+00:00&rwred=0&wls=2&lka=0&lkt=0&TH=&r=1&mta=0&e=qrjt2pnF9zgGkFyTjKYk_pR5phu-vA3LG-HB7vbdRi5701fZlCuHQQ0hG_jHg-igw_yz1W8hZCN-9vQlB0HB9A&A=0CEEFDC684B6E0003319CE0CFFFFFFFF"
206
+ },
207
+ {
208
+ "domain": ".bing.com",
209
+ "expirationDate": 1678137412.161922,
210
+ "hostOnly": false,
211
+ "httpOnly": false,
212
+ "name": "_UR",
213
+ "path": "/",
214
+ "sameSite": "no_restriction",
215
+ "secure": true,
216
+ "session": false,
217
+ "storeId": null,
218
+ "value": "QS=0&TQS=0"
219
+ },
220
+ {
221
+ "domain": ".bing.com",
222
+ "hostOnly": false,
223
+ "httpOnly": true,
224
+ "name": "_EDGE_S",
225
+ "path": "/",
226
+ "sameSite": null,
227
+ "secure": false,
228
+ "session": true,
229
+ "storeId": null,
230
+ "value": "SID=39AA513F3093609E2B0443FA31F161B1"
231
+ },
232
+ {
233
+ "domain": ".bing.com",
234
+ "hostOnly": false,
235
+ "httpOnly": true,
236
+ "name": "CSRFCookie",
237
+ "path": "/",
238
+ "sameSite": "no_restriction",
239
+ "secure": true,
240
+ "session": true,
241
+ "storeId": null,
242
+ "value": "c2152df9-052a-46ab-aaae-a7ac4f74cb61"
243
+ },
244
+ {
245
+ "domain": "www.bing.com",
246
+ "expirationDate": 1693084733.570912,
247
+ "hostOnly": true,
248
+ "httpOnly": true,
249
+ "name": "MUIDB",
250
+ "path": "/",
251
+ "sameSite": null,
252
+ "secure": false,
253
+ "session": false,
254
+ "storeId": null,
255
+ "value": "3F1FBCB532FD6CAB0705AEFD339F6D8E"
256
+ },
257
+ {
258
+ "domain": ".bing.com",
259
+ "expirationDate": 1693084612.247552,
260
+ "hostOnly": false,
261
+ "httpOnly": false,
262
+ "name": "_HPVN",
263
+ "path": "/",
264
+ "sameSite": "no_restriction",
265
+ "secure": true,
266
+ "session": false,
267
+ "storeId": null,
268
+ "value": "CS=eyJQbiI6eyJDbiI6NCwiU3QiOjAsIlFzIjowLCJQcm9kIjoiUCJ9LCJTYyI6eyJDbiI6NCwiU3QiOjAsIlFzIjowLCJQcm9kIjoiSCJ9LCJReiI6eyJDbiI6NCwiU3QiOjAsIlFzIjowLCJQcm9kIjoiVCJ9LCJBcCI6dHJ1ZSwiTXV0ZSI6dHJ1ZSwiTGFkIjoiMjAyMy0wMi0yN1QwMDowMDowMFoiLCJJb3RkIjowLCJHd2IiOjAsIkRmdCI6bnVsbCwiTXZzIjowLCJGbHQiOjAsIkltcCI6OX0="
269
+ },
270
+ {
271
+ "domain": ".bing.com",
272
+ "expirationDate": 1693084729.526585,
273
+ "hostOnly": false,
274
+ "httpOnly": true,
275
+ "name": "KievRPSSecAuth",
276
+ "path": "/",
277
+ "sameSite": "no_restriction",
278
+ "secure": true,
279
+ "session": false,
280
+ "storeId": null,
281
+ "value": "FAB6BBRaTOJILtFsMkpLVWSG6AN6C/svRwNmAAAEgAAACO/rWey3fwW6OAQwjHo2xEgXbJCGGIybKrZdiiBXzd/g6cCGU5h+M9HSQsLHZY/rAOKY6d5e5mtupWob7uzvKyxCHV7cJtK1LMhs6dff8gXNwcBifMvqubuTteJZwkUzYUTRvygA4o7WUuY6/HL+AC/o0r1/kqa0vzDmgqY2Y+CJfZ6wgKr7gkN4PxOxNnRX9Em63LsgSdWncAcuJaW/ZSQ+1JR5RX7YKgOT5mucAqdEbZGAlC9JZlN0Hd+++x6ZoPxpN2yR7iSKoGg0yblXuWghKz/kC5fn1y143tbWO2XF4ZzhthXoJ3FN/0kvMF3oz6L0/YMtjv0KHZlxT6Nz5avxEGHA8S3ftah+yD4qWl+aCH5MZTJw43DvsUtLS80jOHhN1Bv4Imn3e+/D0hrhC4E9BvMfks2LOTnS36F5bOiYQcCuAVVZpsPvmgSf8VZftgRLnPpuTjV7DVr8F4Iy73sBWwgGV5BY3+iwrjWcht6Ng/hRgfsTNmeVxc3lVJ2esR6EhVddrvoDgYD4xaVvm8wxz8uFJitVwGbfRVuRtH37jMAObGh4OXnlC9ycMriAwGDd4Qp3cnARMPFU2E7K0CtpyV/r9yf8R+ghuDbHgtVqjVWkfw3PzF9lpWYA3TBgzAc06GuZLWoFGEAvkiF7lCjtB4T/xRehygcefCRrtkC6SuOrvf3RZnok97eeXy/1Lo1GZdRx1KTacHCiVZhbQUkYX+nY5ohgpKwEEonq75s6hf3rC5KQuXQtmTD4Nd6WZC+P7ruVNx4yGjWy1UZr39WQwMQ+R/afAW9NvUr9f5/18bw5sd60MDxGp5m0Q/mrCeHIW99si96Sxdc4DTR7t/fn2XLmMfL+JVzZSNMJNFmRtvWiTZA1oQBxOkmADvkE3Ga/GhrBcJxfr2Z4V1fxSU2iUg8+t2lkj08w3IgJaoYmtc8Es/+3o0EIeOGMDKZmw5e+0MAApeVMQxlOqA2nZX6zieEw9SpQNfmble78CuuvZlGARsmsQXrEx92ZJItMyn9bkifAg9I7Stgk5a2WZ35AmFS8qd8XWlGpXlGEBR9l2+dtqmRryNStbMJjR7/TvkWZUzbTBeIxwe/8Bjx+AfcOucDYzE7YZ44r6BWbs825qI6V/UZewkU46SHA3NxX7Yzm9DgZfGKLIaZVgTA5fYt3JNh83HKjzNJ5dXfsV/oYHAuGIRsCbvyf8hig8NqrplMyEN+Yz6eJCY9AUJiS24zgKxT2wdMGDjUz00sgIcpxwt5G3ytPTPpdaZ9jwN5OIJqkqFYAaK+n28VGBY1AzE7ZkN4Z0cie8uSBZFCanh/EFUpqMtCSN5mYvBVTCLy1Bo/ETVa6tKKYzt/Zaw/gFB3RWouXy57QP6VZtAWgeFb/gnmftomUA9fS5ur/0tFrQgv6Rq8vQDBkH2kNnLZ7D6CPOLJkRQoaGLqG8EzdL1Yle8gUABfSp8RK7pr/6eqyYEAtdXM50iQg"
282
+ },
283
+ {
284
+ "domain": ".bing.com",
285
+ "expirationDate": 1682258471.766947,
286
+ "hostOnly": false,
287
+ "httpOnly": false,
288
+ "name": "MUID",
289
+ "path": "/",
290
+ "sameSite": "no_restriction",
291
+ "secure": true,
292
+ "session": false,
293
+ "storeId": null,
294
+ "value": "3F1FBCB532FD6CAB0705AEFD339F6D8E"
295
+ },
296
+ {
297
+ "domain": ".bing.com",
298
+ "expirationDate": 1682258471.767004,
299
+ "hostOnly": false,
300
+ "httpOnly": false,
301
+ "name": "SRCHUID",
302
+ "path": "/",
303
+ "sameSite": "no_restriction",
304
+ "secure": true,
305
+ "session": false,
306
+ "storeId": null,
307
+ "value": "V=2&GUID=14CDDFE80626458BA11A57DAD375375A&dmnchg=1"
308
+ },
309
+ {
310
+ "domain": ".bing.com",
311
+ "expirationDate": 1678742329.678283,
312
+ "hostOnly": false,
313
+ "httpOnly": true,
314
+ "name": "WLID",
315
+ "path": "/",
316
+ "sameSite": "no_restriction",
317
+ "secure": true,
318
+ "session": false,
319
+ "storeId": null,
320
+ "value": "SPtvurHJd3r52IJoz+GIPFUD0x/sd9UoT6NOitZQR3XtKw4qP9lEUzFkD+Gr3uXVaSBDTJb4MwnYGWl5sokdnzpNmkQR7NokV7nrirpPzec="
321
+ },
322
+ {
323
+ "domain": ".bing.com",
324
+ "hostOnly": false,
325
+ "httpOnly": false,
326
+ "name": "WLS",
327
+ "path": "/",
328
+ "sameSite": "no_restriction",
329
+ "secure": true,
330
+ "session": true,
331
+ "storeId": null,
332
+ "value": "C=c696172d38f1d852&N=chase"
333
+ }
334
+ ]
data/s-class-manual/index.faiss ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:2cc3da5a2b2c309ca81cc41a1cf1192c619c91ee1a1bfac39cf58b99bc8995fa
3
+ size 3062829
data/s-class-manual/index.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:c1749b9feae4721bbc0390b20cd9ceef84cb531d8fda7a44b89797e65b144af5
3
+ size 1023700
data/s-class-manual/s-class-manual.txt ADDED
The diff for this file is too large to render. See raw diff