将向量添加到 qdrant 会出现验证错误

问题描述 投票:0回答:1

当我尝试添加向量时,我收到 qdrant 错误。以下错误

UnexpectedResponse   Traceback (most recent call last)<ipython-input-36-42a89db32382> in  
----> 3 add_vectors(embeddings, payload)

6 frames
/usr/local/lib/python3.10/dist-packages/qdrant_client/http/api_client.py in send(self, request, type_)
     95             except ValidationError as e:
     96                 raise ResponseHandlingException(e)
---> 97         raise UnexpectedResponse.for_response(response)
     98 
     99     def send_inner(self, request: Request) -> Response:

UnexpectedResponse: Unexpected Response: 422 (Unprocessable Entity)
Raw response content:
b'{"status":{"error":"Validation error in path parameters: [name: value \\"status=<CollectionStatus.GREEN: \'green\'> optimizer_status=<OptimizersStatusOneOf.OK: \'ok\'> vectors_count=0 indexed_vectors_co ...'

下面是我的代码:

raw_text ="some long text...."

def get_chunks(raw_text):

    text_splitter = CharacterTextSplitter(       
      separator="\n",       
      chunk_size=100,        
      chunk_overlap=50,        
      length_function=len)
      chunks = text_splitter.split_text(raw_text)    
  return chunks`
============
`def get_embeddings(chunks, embedding_model_name="text-embedding-ada-002"):

    
    points = []    
    client = OpenAI( api_key=os.environ['OPENAI_API_KEY'],  )   
    embeddings = []    
    for chunk in chunks:        
      embeddings.append(client.embeddings.create(
      input = chunk,model=embedding_model_name).data[0].embedding)
          
    return embeddings
 
===========================================================
   `def add_vectors(vectors, payload):

       client = qdrant_client.QdrantClient(

           os.getenv("QDRANT_HOST"),

           api_key=os.getenv("QDRANT_API_KEY")

          )

      collection = client.get_collection(os.getenv("QDRANT_COLLECTION"))

      # Create a list of PointStruct objects

      points = [

            models.PointStruct(

                id=str(i),  # Assign unique IDs to points

                payload=payload,

                vector=vector

              )

         for i, vector in enumerate(vectors)

    ]



# Insert the points into the vector store

client.upsert(

    collection_name=collection,  # Replace with your collection name

    points=points

)

==================================================== =============

然后我拨打以下电话:

chunks = get_chunks(raw_text)
embeddings = get_embeddings(chunks)
payload = {"user": "gxxxx"}
add_vectors(embeddings, payload)

那就是我收到上述错误的时候。这是什么问题?

我尝试了网上的各种建议

python openaiembeddings qdrant qdrantclient
1个回答
0
投票

您正在使用

get_collection
的输出作为集合名称。
get_collection
返回有关集合的信息,例如您在错误消息中看到的字段:

'[name: value \\"status=<CollectionStatus.GREEN: \'green\'> optimizer_status=<OptimizersStatusOneOf.OK: \'ok\'> vectors_count=0 indexed_vectors_co ...'

解决方案: 应直接在

collection_name
参数中使用集合名称

client.upsert(
    collection_name=os.getenv("QDRANT_COLLECTION"),
    points=points
)
© www.soinside.com 2019 - 2024. All rights reserved.