Open kevinuserdd opened 1 year ago
代码都是可行的,出现报错请上传报错信息。
代码都是可行的,出现报错请上传报错信息。
milvus insert数据的时候报错,但是字段长度我测过没有超过2000. raise ParamError( pymilvus.exceptions.ParamError: invalid input, length of string exceeds max length. length: 3414, max length: 2000
还有bert编码的时候要设置max length吧,对于字段超过512的会报错维度不匹配。input_ids = tokenizer(text, padding=True, truncation=True,max_length=512, return_tensors="pt")["input_ids"]
还有bert编码的时候要设置max length吧,对于字段超过512的会报错维度不匹配。input_ids = tokenizer(text, padding=True, truncation=True,max_length=512, return_tensors="pt")["input_ids"]
这些问题本质上都是你的样本跟代码不匹配导致的,这个仓库仅仅作为readme贴的博文所描述的原理论证,并不能支撑生产环境和复杂情况。如果想要更快的处理文档可以尝试结合langchain来处理:
from langchain.vectorstores import Milvus
from langchain.document_loaders import DirectoryLoader, TextLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain.embeddings import HuggingFaceEmbeddings
# 加载文件夹中的所有txt类型的文件
loader = DirectoryLoader('./knowledge/', glob='**/*.txt', show_progress=True, loader_cls=TextLoader,
loader_kwargs={"encoding": "utf-8"})
documents = loader.load()
# 初始化加载器
text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0)
# 切割加载的 document
split_docs = text_splitter.split_documents(documents)
embeddings = HuggingFaceEmbeddings(model_name="shibing624/text2vec-base-chinese")
vector_db = Milvus.from_documents(split_docs, embeddings, connection_args={"host": "127.0.0.1", "port": "19530"},
collection_name="langchain_knowledge", drop_old=True)
还有bert编码的时候要设置max length吧,对于字段超过512的会报错维度不匹配。input_ids = tokenizer(text, padding=True, truncation=True,max_length=512, return_tensors="pt")["input_ids"]
这些问题本质上都是你的样本跟代码不匹配导致的,这个仓库仅仅作为readme贴的博文所描述的原理论证,并不能支撑生产环境和复杂情况。如果想要更快的处理文档可以尝试结合langchain来处理:
from langchain.vectorstores import Milvus from langchain.document_loaders import DirectoryLoader, TextLoader from langchain.text_splitter import CharacterTextSplitter from langchain.embeddings import HuggingFaceEmbeddings # 加载文件夹中的所有txt类型的文件 loader = DirectoryLoader('./knowledge/', glob='**/*.txt', show_progress=True, loader_cls=TextLoader, loader_kwargs={"encoding": "utf-8"}) documents = loader.load() # 初始化加载器 text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0) # 切割加载的 document split_docs = text_splitter.split_documents(documents) embeddings = HuggingFaceEmbeddings(model_name="shibing624/text2vec-base-chinese") vector_db = Milvus.from_documents(split_docs, embeddings, connection_args={"host": "127.0.0.1", "port": "19530"}, collection_name="langchain_knowledge", drop_old=True)
debug了试了下,不知道是不是milvus版本的问题。 代码里面我是这么定义: fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True, description="primary id"), FieldSchema(name="title", dtype=DataType.VARCHAR, max_length=2000), FieldSchema(name="content", dtype=DataType.VARCHAR, max_length=10000), FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=dimension), ] 可以看出,title这里max length =2000, content 这里max length = 10000.
但是下面milvus 导入的时候报那个错,我是content的长度超过了2000. 但是按照定义content不是10000吗? 感觉是不是串了一列。
还有bert编码的时候要设置max length吧,对于字段超过512的会报错维度不匹配。input_ids = tokenizer(text, padding=True, truncation=True,max_length=512, return_tensors="pt")["input_ids"]
这些问题本质上都是你的样本跟代码不匹配导致的,这个仓库仅仅作为readme贴的博文所描述的原理论证,并不能支撑生产环境和复杂情况。如果想要更快的处理文档可以尝试结合langchain来处理:
from langchain.vectorstores import Milvus from langchain.document_loaders import DirectoryLoader, TextLoader from langchain.text_splitter import CharacterTextSplitter from langchain.embeddings import HuggingFaceEmbeddings # 加载文件夹中的所有txt类型的文件 loader = DirectoryLoader('./knowledge/', glob='**/*.txt', show_progress=True, loader_cls=TextLoader, loader_kwargs={"encoding": "utf-8"}) documents = loader.load() # 初始化加载器 text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0) # 切割加载的 document split_docs = text_splitter.split_documents(documents) embeddings = HuggingFaceEmbeddings(model_name="shibing624/text2vec-base-chinese") vector_db = Milvus.from_documents(split_docs, embeddings, connection_args={"host": "127.0.0.1", "port": "19530"}, collection_name="langchain_knowledge", drop_old=True)
debug了试了下,不知道是不是milvus版本的问题。 代码里面我是这么定义: fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True, description="primary id"), FieldSchema(name="title", dtype=DataType.VARCHAR, max_length=2000), FieldSchema(name="content", dtype=DataType.VARCHAR, max_length=10000), FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=dimension), ] 可以看出,title这里max length =2000, content 这里max length = 10000.
但是下面milvus 导入的时候报那个错,我是content的长度超过了2000. 但是按照定义content不是10000吗? 感觉是不是串了一列。 报错:invalid input, length of string exceeds max length. length: 3414, max length: 2000并没有指明具体的字段,既然说了max length: 2000那就是说明是title字段而非content字段。建议try except打印报错的inster内容看看
还有bert编码的时候要设置max length吧,对于字段超过512的会报错维度不匹配。input_ids = tokenizer(text, padding=True, truncation=True,max_length=512, return_tensors="pt")["input_ids"]
这些问题本质上都是你的样本跟代码不匹配导致的,这个仓库仅仅作为readme贴的博文所描述的原理论证,并不能支撑生产环境和复杂情况。如果想要更快的处理文档可以尝试结合langchain来处理:
from langchain.vectorstores import Milvus from langchain.document_loaders import DirectoryLoader, TextLoader from langchain.text_splitter import CharacterTextSplitter from langchain.embeddings import HuggingFaceEmbeddings # 加载文件夹中的所有txt类型的文件 loader = DirectoryLoader('./knowledge/', glob='**/*.txt', show_progress=True, loader_cls=TextLoader, loader_kwargs={"encoding": "utf-8"}) documents = loader.load() # 初始化加载器 text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0) # 切割加载的 document split_docs = text_splitter.split_documents(documents) embeddings = HuggingFaceEmbeddings(model_name="shibing624/text2vec-base-chinese") vector_db = Milvus.from_documents(split_docs, embeddings, connection_args={"host": "127.0.0.1", "port": "19530"}, collection_name="langchain_knowledge", drop_old=True)
debug了试了下,不知道是不是milvus版本的问题。 代码里面我是这么定义: fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True, description="primary id"), FieldSchema(name="title", dtype=DataType.VARCHAR, max_length=2000), FieldSchema(name="content", dtype=DataType.VARCHAR, max_length=10000), FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=dimension), ] 可以看出,title这里max length =2000, content 这里max length = 10000. 但是下面milvus 导入的时候报那个错,我是content的长度超过了2000. 但是按照定义content不是10000吗? 感觉是不是串了一列。 报错:invalid input, length of string exceeds max length. length: 3414, max length: 2000并没有指明具体的字段,既然说了max length: 2000那就是说明是title字段而非content字段。建议try except打印报错的inster内容看看
打印出来,是content字段里面超了2000
还有bert编码的时候要设置max length吧,对于字段超过512的会报错维度不匹配。input_ids = tokenizer(text, padding=True, truncation=True,max_length=512, return_tensors="pt")["input_ids"]
这些问题本质上都是你的样本跟代码不匹配导致的,这个仓库仅仅作为readme贴的博文所描述的原理论证,并不能支撑生产环境和复杂情况。如果想要更快的处理文档可以尝试结合langchain来处理:
from langchain.vectorstores import Milvus from langchain.document_loaders import DirectoryLoader, TextLoader from langchain.text_splitter import CharacterTextSplitter from langchain.embeddings import HuggingFaceEmbeddings # 加载文件夹中的所有txt类型的文件 loader = DirectoryLoader('./knowledge/', glob='**/*.txt', show_progress=True, loader_cls=TextLoader, loader_kwargs={"encoding": "utf-8"}) documents = loader.load() # 初始化加载器 text_splitter = CharacterTextSplitter(chunk_size=100, chunk_overlap=0) # 切割加载的 document split_docs = text_splitter.split_documents(documents) embeddings = HuggingFaceEmbeddings(model_name="shibing624/text2vec-base-chinese") vector_db = Milvus.from_documents(split_docs, embeddings, connection_args={"host": "127.0.0.1", "port": "19530"}, collection_name="langchain_knowledge", drop_old=True)
debug了试了下,不知道是不是milvus版本的问题。 代码里面我是这么定义: fields = [ FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True, description="primary id"), FieldSchema(name="title", dtype=DataType.VARCHAR, max_length=2000), FieldSchema(name="content", dtype=DataType.VARCHAR, max_length=10000), FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=dimension), ] 可以看出,title这里max length =2000, content 这里max length = 10000. 但是下面milvus 导入的时候报那个错,我是content的长度超过了2000. 但是按照定义content不是10000吗? 感觉是不是串了一列。 报错:invalid input, length of string exceeds max length. length: 3414, max length: 2000并没有指明具体的字段,既然说了max length: 2000那就是说明是title字段而非content字段。建议try except打印报错的inster内容看看
打印出来,是content字段里面超了2000
你的描述和报错对不上,代码贴上来看看
运行还是很多奇怪错误