разделение большого набора данных для использования langchain
В настоящее время я использую langchain, чтобы создать диалогового чат-бота на основе существующих данных. Среди этих данных у меня есть несколько файлов Excel и CSV, которые содержат огромные наборы данных. Мой вопрос: как мне справиться со случаем, когда я хочу загрузить данные такого типа в базу данных векторов? Хорошо разбить ее построчно, чтобы сохранить смысл данных, но я боюсь разрушить базу данных или загрузить ее в том виде, в котором она есть, без разделения.
1 ответ
Если я правильно понимаю ваш вопрос, то, по крайней мере, для начала вам нужен csv_loader .Но оттуда вам захочется (как вы сказали) загрузить его в базу данных векторов. Chroma должна с этим справиться. Вот пример того, как это может выглядеть:
from langchain.llms import OpenAI
from langchain.vectorstores import Chroma
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.document_loaders.csv_loader import CSVLoader
llm = OpenAI(temperature=0, openai_api_key=openai_api_key)
embeddings = OpenAIEmbeddings(openai_api_key=openai_api_key)
loader = CSVLoader(file_path="./example_data/mlb_teams_2012.csv")
data = loader.load()
docsearch = Chroma.from_documents(data, embeddings)
Используя это, langchain прочитает ваши CSV-файлы, а затем Croma встроит документы и сохранит их локально в папке .chroma. Благодаря этой настройке, когда вы запрашиваете данные, вы можете попросить Chroma загружать только записи CSV с соответствующими данными, а не перегружать все, во что вы их вводите.