langroid 0.3.1__py3-none-any.whl → 0.5.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langroid/agent/base.py +42 -6
- langroid/agent/chat_agent.py +2 -2
- langroid/agent/special/doc_chat_agent.py +14 -4
- langroid/agent/special/lance_doc_chat_agent.py +25 -28
- langroid/agent/special/lance_rag/critic_agent.py +16 -6
- langroid/agent/special/lance_rag/query_planner_agent.py +8 -4
- langroid/agent/special/lance_rag_new/__init__.py +9 -0
- langroid/agent/special/lance_rag_new/critic_agent.py +171 -0
- langroid/agent/special/lance_rag_new/lance_rag_task.py +144 -0
- langroid/agent/special/lance_rag_new/query_planner_agent.py +222 -0
- langroid/agent/special/lance_tools.py +14 -8
- langroid/agent/special/neo4j/neo4j_chat_agent.py +1 -1
- langroid/agent/tool_message.py +6 -10
- langroid/utils/pydantic_utils.py +0 -50
- langroid/vector_store/base.py +6 -4
- langroid/vector_store/chromadb.py +4 -2
- langroid/vector_store/lancedb.py +40 -172
- langroid/vector_store/qdrantdb.py +6 -2
- {langroid-0.3.1.dist-info → langroid-0.5.1.dist-info}/METADATA +1 -1
- {langroid-0.3.1.dist-info → langroid-0.5.1.dist-info}/RECORD +23 -19
- pyproject.toml +1 -1
- {langroid-0.3.1.dist-info → langroid-0.5.1.dist-info}/LICENSE +0 -0
- {langroid-0.3.1.dist-info → langroid-0.5.1.dist-info}/WHEEL +0 -0
langroid/vector_store/lancedb.py
CHANGED
@@ -32,13 +32,7 @@ from langroid.utils.configuration import settings
|
|
32
32
|
from langroid.utils.pydantic_utils import (
|
33
33
|
dataframe_to_document_model,
|
34
34
|
dataframe_to_documents,
|
35
|
-
extend_document_class,
|
36
|
-
extra_metadata,
|
37
|
-
flatten_pydantic_instance,
|
38
|
-
flatten_pydantic_model,
|
39
|
-
nested_dict_from_flat,
|
40
35
|
)
|
41
|
-
from langroid.utils.system import pydantic_major_version
|
42
36
|
from langroid.vector_store.base import VectorStore, VectorStoreConfig
|
43
37
|
|
44
38
|
try:
|
@@ -58,10 +52,6 @@ class LanceDBConfig(VectorStoreConfig):
|
|
58
52
|
storage_path: str = ".lancedb/data"
|
59
53
|
embedding: EmbeddingModelsConfig = OpenAIEmbeddingsConfig()
|
60
54
|
distance: str = "cosine"
|
61
|
-
# document_class is used to store in lancedb with right schema,
|
62
|
-
# and also to retrieve the right type of Documents when searching.
|
63
|
-
document_class: Type[Document] = Document
|
64
|
-
flatten: bool = False # flatten Document class into LanceSchema ?
|
65
55
|
|
66
56
|
|
67
57
|
class LanceDB(VectorStore):
|
@@ -78,7 +68,6 @@ class LanceDB(VectorStore):
|
|
78
68
|
self.port = config.port
|
79
69
|
self.is_from_dataframe = False # were docs ingested from a dataframe?
|
80
70
|
self.df_metadata_columns: List[str] = [] # metadata columns from dataframe
|
81
|
-
self._setup_schemas(config.document_class)
|
82
71
|
|
83
72
|
load_dotenv()
|
84
73
|
if self.config.cloud:
|
@@ -104,40 +93,6 @@ class LanceDB(VectorStore):
|
|
104
93
|
uri=new_storage_path,
|
105
94
|
)
|
106
95
|
|
107
|
-
# Note: Only create collection if a non-null collection name is provided.
|
108
|
-
# This is useful to delay creation of vecdb until we have a suitable
|
109
|
-
# collection name (e.g. we could get it from the url or folder path).
|
110
|
-
if config.collection_name is not None:
|
111
|
-
self.create_collection(
|
112
|
-
config.collection_name, replace=config.replace_collection
|
113
|
-
)
|
114
|
-
|
115
|
-
def _setup_schemas(self, doc_cls: Type[Document] | None) -> None:
|
116
|
-
try:
|
117
|
-
doc_cls = doc_cls or self.config.document_class
|
118
|
-
self.unflattened_schema = self._create_lance_schema(doc_cls)
|
119
|
-
self.schema = (
|
120
|
-
self._create_flat_lance_schema(doc_cls)
|
121
|
-
if self.config.flatten
|
122
|
-
else self.unflattened_schema
|
123
|
-
)
|
124
|
-
except (AttributeError, TypeError) as e:
|
125
|
-
pydantic_version = pydantic_major_version()
|
126
|
-
if pydantic_version > 1:
|
127
|
-
raise ValueError(
|
128
|
-
f"""
|
129
|
-
{e}
|
130
|
-
====
|
131
|
-
You are using Pydantic v{pydantic_version},
|
132
|
-
which is not yet compatible with Langroid's LanceDB integration.
|
133
|
-
To use Lancedb with Langroid, please install the
|
134
|
-
latest pydantic 1.x instead of pydantic v2, e.g.
|
135
|
-
pip install "pydantic<2.0.0"
|
136
|
-
"""
|
137
|
-
)
|
138
|
-
else:
|
139
|
-
raise e
|
140
|
-
|
141
96
|
def clear_empty_collections(self) -> int:
|
142
97
|
coll_names = self.list_collections()
|
143
98
|
n_deletes = 0
|
@@ -234,91 +189,8 @@ class LanceDB(VectorStore):
|
|
234
189
|
) # type: ignore
|
235
190
|
return NewModel # type: ignore
|
236
191
|
|
237
|
-
def _create_flat_lance_schema(self, doc_cls: Type[Document]) -> Type[BaseModel]:
|
238
|
-
"""
|
239
|
-
Flat version of the lance_schema, as nested Pydantic schemas are not yet
|
240
|
-
supported by LanceDB.
|
241
|
-
"""
|
242
|
-
if not has_lancedb:
|
243
|
-
raise LangroidImportError("lancedb", "lancedb")
|
244
|
-
lance_model = self._create_lance_schema(doc_cls)
|
245
|
-
FlatModel = flatten_pydantic_model(lance_model, base_model=LanceModel)
|
246
|
-
return FlatModel
|
247
|
-
|
248
192
|
def create_collection(self, collection_name: str, replace: bool = False) -> None:
|
249
|
-
|
250
|
-
Create a collection with the given name, optionally replacing an existing
|
251
|
-
collection if `replace` is True.
|
252
|
-
Args:
|
253
|
-
collection_name (str): Name of the collection to create.
|
254
|
-
replace (bool): Whether to replace an existing collection
|
255
|
-
with the same name. Defaults to False.
|
256
|
-
"""
|
257
|
-
self.config.collection_name = collection_name
|
258
|
-
collections = self.list_collections()
|
259
|
-
if collection_name in collections:
|
260
|
-
coll = self.client.open_table(collection_name)
|
261
|
-
if coll.head().shape[0] > 0:
|
262
|
-
logger.warning(f"Non-empty Collection {collection_name} already exists")
|
263
|
-
if not replace:
|
264
|
-
logger.warning("Not replacing collection")
|
265
|
-
return
|
266
|
-
else:
|
267
|
-
logger.warning("Recreating fresh collection")
|
268
|
-
try:
|
269
|
-
self.client.create_table(
|
270
|
-
collection_name, schema=self.schema, mode="overwrite"
|
271
|
-
)
|
272
|
-
except (AttributeError, TypeError) as e:
|
273
|
-
pydantic_version = pydantic_major_version()
|
274
|
-
if pydantic_version > 1:
|
275
|
-
raise ValueError(
|
276
|
-
f"""
|
277
|
-
{e}
|
278
|
-
====
|
279
|
-
You are using Pydantic v{pydantic_version},
|
280
|
-
which is not yet compatible with Langroid's LanceDB integration.
|
281
|
-
To use Lancedb with Langroid, please install the
|
282
|
-
latest pydantic 1.x instead of pydantic v2, e.g.
|
283
|
-
pip install "pydantic<2.0.0"
|
284
|
-
"""
|
285
|
-
)
|
286
|
-
else:
|
287
|
-
raise e
|
288
|
-
|
289
|
-
if settings.debug:
|
290
|
-
level = logger.getEffectiveLevel()
|
291
|
-
logger.setLevel(logging.INFO)
|
292
|
-
logger.setLevel(level)
|
293
|
-
|
294
|
-
def _maybe_set_doc_class_schema(self, doc: Document) -> None:
|
295
|
-
"""
|
296
|
-
Set the config.document_class and self.schema based on doc if needed
|
297
|
-
Args:
|
298
|
-
doc: an instance of Document, to be added to a collection
|
299
|
-
"""
|
300
|
-
extra_metadata_fields = extra_metadata(doc, self.config.document_class)
|
301
|
-
if len(extra_metadata_fields) > 0:
|
302
|
-
logger.warning(
|
303
|
-
f"""
|
304
|
-
Added documents contain extra metadata fields:
|
305
|
-
{extra_metadata_fields}
|
306
|
-
which were not present in the original config.document_class.
|
307
|
-
Trying to change document_class and corresponding schemas.
|
308
|
-
Overriding LanceDBConfig.document_class with an auto-generated
|
309
|
-
Pydantic class that includes these extra fields.
|
310
|
-
If this fails, or you see odd results, it is recommended that you
|
311
|
-
define a subclass of Document, with metadata of class derived from
|
312
|
-
DocMetaData, with extra fields defined via
|
313
|
-
`Field(..., description="...")` declarations,
|
314
|
-
and set this document class as the value of the
|
315
|
-
LanceDBConfig.document_class attribute.
|
316
|
-
"""
|
317
|
-
)
|
318
|
-
|
319
|
-
doc_cls = extend_document_class(doc)
|
320
|
-
self.config.document_class = doc_cls
|
321
|
-
self._setup_schemas(doc_cls)
|
193
|
+
self.config.replace_collection = replace
|
322
194
|
|
323
195
|
def add_documents(self, documents: Sequence[Document]) -> None:
|
324
196
|
super().maybe_add_ids(documents)
|
@@ -329,39 +201,52 @@ class LanceDB(VectorStore):
|
|
329
201
|
coll_name = self.config.collection_name
|
330
202
|
if coll_name is None:
|
331
203
|
raise ValueError("No collection name set, cannot ingest docs")
|
332
|
-
self._maybe_set_doc_class_schema(documents[0])
|
204
|
+
# self._maybe_set_doc_class_schema(documents[0])
|
205
|
+
table_exists = False
|
333
206
|
if (
|
334
|
-
coll_name
|
335
|
-
|
207
|
+
coll_name in colls
|
208
|
+
and self.client.open_table(coll_name).head(1).shape[0] > 0
|
336
209
|
):
|
337
|
-
# collection
|
338
|
-
|
210
|
+
# collection exists and is not empty:
|
211
|
+
# if replace_collection is True, we'll overwrite the existing collection,
|
212
|
+
# else we'll append to it.
|
213
|
+
if self.config.replace_collection:
|
214
|
+
self.client.drop_table(coll_name)
|
215
|
+
else:
|
216
|
+
table_exists = True
|
339
217
|
|
340
218
|
ids = [str(d.id()) for d in documents]
|
341
219
|
# don't insert all at once, batch in chunks of b,
|
342
220
|
# else we get an API error
|
343
221
|
b = self.config.batch_size
|
344
222
|
|
345
|
-
def make_batches() -> Generator[List[
|
223
|
+
def make_batches() -> Generator[List[Dict[str, Any]], None, None]:
|
346
224
|
for i in range(0, len(ids), b):
|
347
225
|
batch = [
|
348
|
-
|
226
|
+
dict(
|
349
227
|
id=ids[i + j],
|
350
228
|
vector=embedding_vecs[i + j],
|
351
229
|
**doc.dict(),
|
352
230
|
)
|
353
231
|
for j, doc in enumerate(documents[i : i + b])
|
354
232
|
]
|
355
|
-
if self.config.flatten:
|
356
|
-
batch = [
|
357
|
-
flatten_pydantic_instance(instance) # type: ignore
|
358
|
-
for instance in batch
|
359
|
-
]
|
360
233
|
yield batch
|
361
234
|
|
362
|
-
tbl = self.client.open_table(self.config.collection_name)
|
363
235
|
try:
|
364
|
-
|
236
|
+
if table_exists:
|
237
|
+
tbl = self.client.open_table(coll_name)
|
238
|
+
tbl.add(make_batches())
|
239
|
+
else:
|
240
|
+
batch_gen = make_batches()
|
241
|
+
batch = next(batch_gen)
|
242
|
+
# use first batch to create table...
|
243
|
+
tbl = self.client.create_table(
|
244
|
+
coll_name,
|
245
|
+
data=batch,
|
246
|
+
mode="create",
|
247
|
+
)
|
248
|
+
# ... and add the rest
|
249
|
+
tbl.add(batch_gen)
|
365
250
|
except Exception as e:
|
366
251
|
logger.error(
|
367
252
|
f"""
|
@@ -427,7 +312,6 @@ class LanceDB(VectorStore):
|
|
427
312
|
exclude=["vector"],
|
428
313
|
)
|
429
314
|
self.config.document_class = doc_cls # type: ignore
|
430
|
-
self._setup_schemas(doc_cls) # type: ignore
|
431
315
|
else:
|
432
316
|
# collection exists and is not empty, so append to it
|
433
317
|
tbl = self.client.open_table(self.config.collection_name)
|
@@ -452,35 +336,19 @@ class LanceDB(VectorStore):
|
|
452
336
|
return self._records_to_docs(records)
|
453
337
|
|
454
338
|
def _records_to_docs(self, records: List[Dict[str, Any]]) -> List[Document]:
|
455
|
-
|
456
|
-
docs = [
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
HINT: This could happen when you're re-using an
|
467
|
-
existing LanceDB store with a different schema.
|
468
|
-
Try deleting your local lancedb storage at `{self.config.storage_path}`
|
469
|
-
re-ingesting your documents and/or replacing the collections.
|
470
|
-
"""
|
471
|
-
)
|
472
|
-
|
473
|
-
doc_cls = self.config.document_class
|
474
|
-
doc_cls_field_names = doc_cls.__fields__.keys()
|
475
|
-
return [
|
476
|
-
doc_cls(
|
477
|
-
**{
|
478
|
-
field_name: getattr(doc, field_name)
|
479
|
-
for field_name in doc_cls_field_names
|
480
|
-
}
|
339
|
+
try:
|
340
|
+
docs = [self.config.document_class(**rec) for rec in records]
|
341
|
+
except ValidationError as e:
|
342
|
+
raise ValueError(
|
343
|
+
f"""
|
344
|
+
Error validating LanceDB result: {e}
|
345
|
+
HINT: This could happen when you're re-using an
|
346
|
+
existing LanceDB store with a different schema.
|
347
|
+
Try deleting your local lancedb storage at `{self.config.storage_path}`
|
348
|
+
re-ingesting your documents and/or replacing the collections.
|
349
|
+
"""
|
481
350
|
)
|
482
|
-
|
483
|
-
]
|
351
|
+
return docs
|
484
352
|
|
485
353
|
def get_all_documents(self, where: str = "") -> List[Document]:
|
486
354
|
if self.config.collection_name is None:
|
@@ -380,7 +380,11 @@ class QdrantDB(VectorStore):
|
|
380
380
|
with_payload=True,
|
381
381
|
with_vectors=False,
|
382
382
|
)
|
383
|
-
docs += [
|
383
|
+
docs += [
|
384
|
+
self.config.document_class(**record.payload) # type: ignore
|
385
|
+
for record in results
|
386
|
+
]
|
387
|
+
# ignore
|
384
388
|
if next_page_offset is None:
|
385
389
|
break
|
386
390
|
offset = next_page_offset # type: ignore
|
@@ -451,7 +455,7 @@ class QdrantDB(VectorStore):
|
|
451
455
|
] # 2D list -> 1D list
|
452
456
|
scores = [match.score for match in search_result if match is not None]
|
453
457
|
docs = [
|
454
|
-
|
458
|
+
self.config.document_class(**(match.payload)) # type: ignore
|
455
459
|
for match in search_result
|
456
460
|
if match is not None
|
457
461
|
]
|
@@ -1,25 +1,29 @@
|
|
1
1
|
langroid/__init__.py,sha256=z_fCOLQJPOw3LLRPBlFB5-2HyCjpPgQa4m4iY5Fvb8Y,1800
|
2
2
|
langroid/agent/__init__.py,sha256=ll0Cubd2DZ-fsCMl7e10hf9ZjFGKzphfBco396IKITY,786
|
3
|
-
langroid/agent/base.py,sha256=
|
3
|
+
langroid/agent/base.py,sha256=x6SbInDGJUL_kusr-ligYsCwuaid2CmcRkzlucOXyw0,38999
|
4
4
|
langroid/agent/batch.py,sha256=feRA_yRG768ElOQjrKEefcRv6Aefd_yY7qktuYUQDwc,10040
|
5
5
|
langroid/agent/callbacks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
langroid/agent/callbacks/chainlit.py,sha256=UKG2_v4ktfkEaGvdouVRHEqQejEYya2Rli8jrP65TmA,22055
|
7
|
-
langroid/agent/chat_agent.py,sha256=
|
7
|
+
langroid/agent/chat_agent.py,sha256=M5tdp1HuFthhMChLNd5XKBWxoiMSTkOuXlM8JoRLiUk,41586
|
8
8
|
langroid/agent/chat_document.py,sha256=MwtNABK28tfSzqCeQlxoauT8uPn8oldU7dlnrX8aQ10,11232
|
9
9
|
langroid/agent/helpers.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
langroid/agent/junk,sha256=LxfuuW7Cijsg0szAzT81OjWWv1PMNI-6w_-DspVIO2s,339
|
11
11
|
langroid/agent/openai_assistant.py,sha256=3saI9PwF8IZNJcjqyUy-rj73TInAzdlk14LiOvT_Dkc,33548
|
12
12
|
langroid/agent/special/__init__.py,sha256=gik_Xtm_zV7U9s30Mn8UX3Gyuy4jTjQe9zjiE3HWmEo,1273
|
13
|
-
langroid/agent/special/doc_chat_agent.py,sha256=
|
14
|
-
langroid/agent/special/lance_doc_chat_agent.py,sha256=
|
13
|
+
langroid/agent/special/doc_chat_agent.py,sha256=8NPAhMnHkFUolQ8EHos40tz5Vwuz_m33NjUfjheXWXY,54569
|
14
|
+
langroid/agent/special/lance_doc_chat_agent.py,sha256=Hjpu6u9UPAFMg5J6K97PRFaLbNrGhInC0N9oGi09CeY,10006
|
15
15
|
langroid/agent/special/lance_rag/__init__.py,sha256=QTbs0IVE2ZgDg8JJy1zN97rUUg4uEPH7SLGctFNumk4,174
|
16
|
-
langroid/agent/special/lance_rag/critic_agent.py,sha256=
|
16
|
+
langroid/agent/special/lance_rag/critic_agent.py,sha256=S3NA3OAO7XaXjCrmwhKB7qCPlgRZFvDxiB5Qra65Zhs,7959
|
17
17
|
langroid/agent/special/lance_rag/lance_rag_task.py,sha256=l_HQgrYY-CX2FwIsS961aEF3bYog3GDYo98fj0C0mSk,2889
|
18
|
-
langroid/agent/special/lance_rag/query_planner_agent.py,sha256=
|
19
|
-
langroid/agent/special/
|
18
|
+
langroid/agent/special/lance_rag/query_planner_agent.py,sha256=QB8UYITUCkgSPturEwu_3i4kU8jXxW_jXNGSLlH5tMc,10109
|
19
|
+
langroid/agent/special/lance_rag_new/__init__.py,sha256=QTbs0IVE2ZgDg8JJy1zN97rUUg4uEPH7SLGctFNumk4,174
|
20
|
+
langroid/agent/special/lance_rag_new/critic_agent.py,sha256=ksUjI4Wd3SgXsEwMpEmCIvJrKd3k1k_AyUIYaNV5pBw,8341
|
21
|
+
langroid/agent/special/lance_rag_new/lance_rag_task.py,sha256=mKo4lCC1ff5Jt9BlxwclQ_y3omw2S_f0MVIJfNmXM6w,5267
|
22
|
+
langroid/agent/special/lance_rag_new/query_planner_agent.py,sha256=JqO_5fKW8HPn-zqKsZzX1sl05RgtcT63qpDMR9-q33A,10251
|
23
|
+
langroid/agent/special/lance_tools.py,sha256=BznV_r3LAFyybvBRa9KQ0oU7mPM3uQVfri7PFp7M_qc,1894
|
20
24
|
langroid/agent/special/neo4j/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
25
|
langroid/agent/special/neo4j/csv_kg_chat.py,sha256=dRsAgMBa1H_EMI2YYgJR2Xyv1D7e4o3G9M64mTewq_c,6409
|
22
|
-
langroid/agent/special/neo4j/neo4j_chat_agent.py,sha256=
|
26
|
+
langroid/agent/special/neo4j/neo4j_chat_agent.py,sha256=ryXFx2-ddlNzip8Zssrg0bCyNcFyIu4vax_z3WBXkyI,13106
|
23
27
|
langroid/agent/special/neo4j/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
28
|
langroid/agent/special/neo4j/utils/system_message.py,sha256=vRpz1P-OYLLiC6OGYYoK6x77yxVzDxMTCEJSsYUIuG4,2242
|
25
29
|
langroid/agent/special/relevance_extractor_agent.py,sha256=zIx8GUdVo1aGW6ASla0NPQjYYIpmriK_TYMijqAx3F8,4796
|
@@ -34,7 +38,7 @@ langroid/agent/special/sql/utils/tools.py,sha256=vFYysk6Vi7HJjII8B4RitA3pt_z3gkS
|
|
34
38
|
langroid/agent/special/table_chat_agent.py,sha256=d9v2wsblaRx7oMnKhLV7uO_ujvk9gh59pSGvBXyeyNc,9659
|
35
39
|
langroid/agent/task.py,sha256=vKM2dmRYSH4i_VA0lf2axUtZcTGU44rVHz6EyxI4kG0,73990
|
36
40
|
langroid/agent/team.py,sha256=88VNRSmK35WEl620GfBzuIrBASXYSeBZ8yDKX-nP_Bo,75778
|
37
|
-
langroid/agent/tool_message.py,sha256=
|
41
|
+
langroid/agent/tool_message.py,sha256=ggxmIZO_wi6x5uD-YWml07Bfgms-ohOSKHyQQdJFi4o,9571
|
38
42
|
langroid/agent/tools/__init__.py,sha256=e-63cfwQNk_ftRKQwgDAJQK16QLbRVWDBILeXIc7wLk,402
|
39
43
|
langroid/agent/tools/duckduckgo_search_tool.py,sha256=NhsCaGZkdv28nja7yveAhSK_w6l_Ftym8agbrdzqgfo,1935
|
40
44
|
langroid/agent/tools/extract_tool.py,sha256=u5lL9rKBzaLBOrRyLnTAZ97pQ1uxyLP39XsWMnpaZpw,3789
|
@@ -118,20 +122,20 @@ langroid/utils/output/citations.py,sha256=PSY2cpti8W-ZGFMAgj1lYoEIZy0lsniLpCliMs
|
|
118
122
|
langroid/utils/output/printing.py,sha256=yzPJZN-8_jyOJmI9N_oLwEDfjMwVgk3IDiwnZ4eK_AE,2962
|
119
123
|
langroid/utils/output/status.py,sha256=rzbE7mDJcgNNvdtylCseQcPGCGghtJvVq3lB-OPJ49E,1049
|
120
124
|
langroid/utils/pandas_utils.py,sha256=UctS986Jtl_MvU5rA7-GfrjEHXP7MNu8ePhepv0bTn0,755
|
121
|
-
langroid/utils/pydantic_utils.py,sha256=
|
125
|
+
langroid/utils/pydantic_utils.py,sha256=X35qxjE4sSIi-oBMkI1s9fiUIJbpXHLmJqcJ7zsy0jg,19914
|
122
126
|
langroid/utils/system.py,sha256=nvKeeUAj4eviR4kYpcr9h-HYdhqUNMTRBTHBOhz0GdU,5182
|
123
127
|
langroid/utils/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
124
128
|
langroid/utils/web/login.py,sha256=1iz9eUAHa87vpKIkzwkmFa00avwFWivDSAr7QUhK7U0,2528
|
125
129
|
langroid/vector_store/__init__.py,sha256=6xBjb_z4QtUy4vz4RuFbcbSwmHrggHL8-q0DwCf3PMM,972
|
126
|
-
langroid/vector_store/base.py,sha256=
|
127
|
-
langroid/vector_store/chromadb.py,sha256=
|
128
|
-
langroid/vector_store/lancedb.py,sha256=
|
130
|
+
langroid/vector_store/base.py,sha256=pkc4n0yWGVk7iRUOLFkU_ID5NiBFfAcA3lBlPNX79pU,13623
|
131
|
+
langroid/vector_store/chromadb.py,sha256=KMfHrgovQEOeJR_LsMpGM8BteJ50wpisDu608RhU3SU,7940
|
132
|
+
langroid/vector_store/lancedb.py,sha256=MLubJBhtNIFX6zY0qANqCoB6MlL-oZiJCg9gZp2H2rs,14620
|
129
133
|
langroid/vector_store/meilisearch.py,sha256=6frB7GFWeWmeKzRfLZIvzRjllniZ1cYj3HmhHQICXLs,11663
|
130
134
|
langroid/vector_store/momento.py,sha256=qR-zBF1RKVHQZPZQYW_7g-XpTwr46p8HJuYPCkfJbM4,10534
|
131
135
|
langroid/vector_store/qdrant_cloud.py,sha256=3im4Mip0QXLkR6wiqVsjV1QvhSElfxdFSuDKddBDQ-4,188
|
132
|
-
langroid/vector_store/qdrantdb.py,sha256=
|
133
|
-
pyproject.toml,sha256=
|
134
|
-
langroid-0.
|
135
|
-
langroid-0.
|
136
|
-
langroid-0.
|
137
|
-
langroid-0.
|
136
|
+
langroid/vector_store/qdrantdb.py,sha256=v88lqFkepADvlN6lByUj9I4NEKa9X9lWH16uTPPbYrE,17457
|
137
|
+
pyproject.toml,sha256=1jCGCKPNCobDsOptcZnMKZIsI044DCR2YSnEPpEL4sY,7063
|
138
|
+
langroid-0.5.1.dist-info/LICENSE,sha256=EgVbvA6VSYgUlvC3RvPKehSg7MFaxWDsFuzLOsPPfJg,1065
|
139
|
+
langroid-0.5.1.dist-info/METADATA,sha256=TK7kU-GZZPw3-m2A1UJZwBH3kdL5wEHb0umIVGCcmeg,54402
|
140
|
+
langroid-0.5.1.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
141
|
+
langroid-0.5.1.dist-info/RECORD,,
|
pyproject.toml
CHANGED
File without changes
|
File without changes
|