createCollection method
Future<CollectionInfo>
createCollection(
- String docsName,
- List<
Segment> segmentList, - LLMSettings llmSettings
override
Implementation
@override
Future<CollectionInfo> createCollection(String docsName, List<Segment> segmentList, LLMSettings llmSettings) async {
List<String> idList = [];
List<String> documents = [];
List<Map<String, dynamic>> metadataList = [];
int size = segmentList.length;
Uuid uuid = Uuid();
String docsIdAsName = uuid.v4();
for(int i=0; i< size; i++) {
idList.add(uuid.v4());
documents.add(segmentList[i].text);
Map<String, dynamic> systemMetadata = {vdbKey: vdbValue, embeddingsModelKey: llmSettings.llmConfig.model};
Map<String, dynamic> segmentMetadata = _convertToSegmentMetadata(systemMetadata, segmentList[i].metadata);
metadataList.add(segmentMetadata);
}
Map<String, dynamic> collectionMetadata = {};
collectionMetadata[segmentIdOrderKey] = jsonEncode(idList);
collectionMetadata[docsNameKey] = docsName;
EmbeddingFunction embeddingFunction = OpenAIEmbeddingFunction(llmConfig: llmSettings.llmConfig, listen: llmSettings.listenToken);
try {
Collection collection = await client.createCollection(
name: docsIdAsName,
metadata: collectionMetadata,
embeddingFunction: embeddingFunction
);
await collection.add(
ids: idList,
documents: documents,
metadatas: metadataList
);
} on ChromaApiClientException catch(e) {
VectorDatabaseException vdbException = VectorDatabaseException(
code: e.code??500,
message: e.message + ": " + (e.body is String ? (e.body as String) : e.body.toString())
);
throw vdbException;
}
return CollectionInfo(name: docsIdAsName, docsName: docsName);
}