fix: Resolve `AttributeError` in Google Cloud Enterprise Search retriever (#8872)

- Reverting some of the changes made in
https://github.com/langchain-ai/langchain/pull/8369
pull/8932/head
Holt Skinner 1 year ago committed by GitHub
parent b2eb4ff0fc
commit fad26e79a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -116,22 +116,37 @@ class GoogleCloudEnterpriseSearchRetriever(BaseRetriever):
self, results: Sequence[SearchResult] self, results: Sequence[SearchResult]
) -> List[Document]: ) -> List[Document]:
"""Converts a sequence of search results to a list of LangChain documents.""" """Converts a sequence of search results to a list of LangChain documents."""
from google.protobuf.json_format import MessageToDict
documents: List[Document] = [] documents: List[Document] = []
for result in results: for result in results:
derived_struct_data = result.document.derived_struct_data document_dict = MessageToDict(
doc_metadata = result.document.struct_data result.document._pb, preserving_proto_field_name=True
doc_metadata.source = derived_struct_data.link or "" )
doc_metadata.id = result.document.id derived_struct_data = document_dict.get("derived_struct_data", None)
if not derived_struct_data:
for chunk in ( continue
derived_struct_data.extractive_answers
or derived_struct_data.extractive_segments doc_metadata = document_dict.get("struct_data", {})
): doc_metadata["id"] = document_dict["id"]
if hasattr(chunk, "page_number"):
doc_metadata.source += f":{chunk.page_number}" chunk_type = (
"extractive_answers"
if self.get_extractive_answers
else "extractive_segments"
)
for chunk in getattr(derived_struct_data, chunk_type, []):
doc_metadata["source"] = derived_struct_data.get("link", "")
if chunk_type == "extractive_answers":
doc_metadata["source"] += f":{chunk.get('pageNumber', '')}"
documents.append( documents.append(
Document(page_content=chunk.content, metadata=doc_metadata) Document(
page_content=chunk.get("content", ""), metadata=doc_metadata
)
) )
return documents return documents

Loading…
Cancel
Save